- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在玩构建线性回归的 Tensorflow 示例,我的代码如下:
import numpy as np
import tensorflow as tf
train_X = np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = np.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = train_X.shape[0]
batch_size = 100
total_epochs = 50
X = tf.placeholder('float')
y = tf.placeholder('float')
W = tf.Variable(np.random.randn(), name="weights")
b = tf.Variable(np.random.randn(), name="bias")
y_pred = tf.add(tf.mul(X, W), b)
cost = tf.reduce_sum(tf.pow(y_pred-y, 2))/(2*n_samples) #L2 loss
optimizer = tf.train.AdamOptimizer().minimize(cost) #Gradient
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print("Initia values for W and b: ", W.eval(), b.eval())
for _ in range(total_epochs):
sess.run(optimizer, feed_dict={X: x, y: y})
print("Value for W and b after GD: ", W.eval(), b.eval())
但是,运行上面的命令会给我这个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-11-185d8e05cbcd> in <module>()
28 for _ in range(total_epochs):
29 for (x, y) in zip(train_X, train_Y):
---> 30 sess.run(optimizer, feed_dict={X: x, y: y})
31 print("Value for W and b after GD: ", W.eval(), b.eval())
/home/ubuntu/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc in run(self, fetches, feed_dict, options, run_metadata)
338 try:
339 result = self._run(None, fetches, feed_dict, options_ptr,
--> 340 run_metadata_ptr)
341 if run_metadata:
342 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
/home/ubuntu/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc in _run(self, handle, fetches, feed_dict, options, run_metadata)
540 except Exception as e:
541 raise TypeError('Cannot interpret feed_dict key as Tensor: '
--> 542 + e.args[0])
543
544 if isinstance(subfeed_val, ops.Tensor):
TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a float64 into a Tensor.
深入挖掘后,我意识到错误在这里:
feed_dict={X: x, y: y}
我使用的键值对是相同的(“y”和“y”)。如果我将其更改为 Y:y,并相应地修改其余部分:
Y = tf.placeholder('float')
cost = tf.reduce_sum(tf.pow(y_pred-Y, 2))/(2*n_samples) #L2 loss
sess.run(optimizer, feed_dict={X: x, Y: y})
代码将完美运行。
我很想知道为什么我不能对 feed_dict 中的键值对使用相同的符号?左边(关键)的'y'不应该指的是上面成本函数中的'y'吗?
最佳答案
feed_dict
参数是一个需要张量作为键的字典。在您更正的示例中,X
和 Y
是那些张量。
但是,如果您使用X
或Y
作为另一个变量的名称,您将覆盖初始张量和X
或Y
将不再对应于图表中的张量。 Tensorflow 无法理解您引用图形中的节点,因为它们已被覆盖。
简而言之,您试图对两个不同的变量使用相同的名称,这是不可能的。
关于python - tensorflow 'feed_dict' : using same symbol for key-value pair got 'TypeError: Cannot interpret feed_dict key as Tensor' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37267584/
我正在尝试找出这两个部分之间的区别,这似乎与 question 重复,但那里给出的答案并没有解释很多,所以我想要一个更详细和简洁的解释。 最佳答案 拆分是出于安全原因。默认情况下(过去仅在 -Wl,-
ELF 格式的 .got 和 .got.plt 部分有什么区别? 最佳答案 我之前的评论是对的: I think .got is for relocations regarding global 'v
我知道在典型的 ELF 二进制文件中,函数是通过过程链接表 (PLT) 调用的。函数的 PLT 条目通常包含到全局偏移表 (GOT) 条目的跳转。该条目将首先引用一些代码以将实际函数地址加载到 GOT
我知道在典型的 ELF 二进制文件中,函数是通过过程链接表 (PLT) 调用的。函数的 PLT 条目通常包含到全局偏移表 (GOT) 条目的跳转。该条目将首先引用一些代码以将实际函数地址加载到 GOT
我对 SICP 1.37 的迭代解决方案是 (define (con-frac n d k) (define (iter i result) (if (= 1 i) res
我正在尝试开始部署,但收到此错误 error: error validating "httpd-basic-deployment.yaml": error validating data: Valid
获取错误 ORA-00932: inconsistent datatypes: expected CHAR got NUMBER 00932. 00000 - "inconsistent dataty
我在没有全局偏移表的情况下编译多个 PIC 文件时遇到问题。 使用以下参数编译第一个文件 onefile.c 时,程序集不包含对 GOT 的引用: arm-none-eabi-gcc.exe firs
Your smiling at me is my daily dose of magic. 你嫣然的微笑是我每日享受到的魅力。 you hold a piece of me no matte
我是 Twilio 的新手。我正在尝试使用本教程将 SMS 转发到电子邮件地址: https://www.twilio.com/blog/2017/07/forward-incoming-sms-me
谁能帮我在 GWT 上创建离线 map ,我听说过 OpenLayers,但我没有找到任何源代码,你对此有什么想法吗?谢谢。 最佳答案 您将需要GWT-Openlayers Wrapper对于 Ope
我正在处理一些在编译为 PIC(位置无关代码)时速度变慢 70-80% 的代码,并且正在寻找缓解问题的方法。问题的很大一部分是 gcc 坚持在每个函数中插入以下内容: call __i686.get_
我编写了一个自定义 hamcrest 匹配器,用于检查列表中的文件是否已被复制。该列表可能很长(1000 个以上文件),因此如果缺少一个文件,我不希望匹配器打印出整个列表。 我可以为丢失的文件进行自定
我的意思是在模块中定义的非静态全局变量,而不是在外部。 为什么一定要通过GOT引用呢?为什么不使用相对地址?(因为.data 段中的全局变量和.text 段中的引用之间的距离是一个常量,它也是位置无关
当我在阅读时 http://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries/#id
某些特定于平台的功能(例如 SSE 或 AVX)的可用性可以在运行时确定,如果不想为不同的功能编译和发布不同的对象,这将非常有用。 例如,以下代码允许我检查 AVX 并使用 gcc 进行编译,它提供了
我如何检查互联网连接是否成功(Wifi/3G/其他) 如果用户没有 Wifi 连接,我已经向用户显示错误,但我如何才能确保用户确实获得了 3G 连接如果他们希望在没有 Wifi 连接的情况下连接使用应
这是示例程序集文件,test.s .global main main: mov __progname@GOT, %eax // failed to compile mov __
mysqldump:得到错误:1449:使用锁表时指定为定义者的用户('root'@'192.200.1.16')不存在 请给出上述错误的解决方案。 最佳答案 最好使用第一个mysqldump和--s
前言:本篇为笔者学习极客时间《深入浅出计算机组成》过程中的部分疑问和解疑记录,因为这一块问题笔者学习过程中搜索所得答案较少,故留此博客。 1. 编译、链接和加载 我们知道,“C 语言代码 - 汇编代码
我是一名优秀的程序员,十分优秀!