我刚刚开始学习张量流编码,而且我坚持使用非常基本的代码来创建神经网络。以下是代码:
import tensorflow as tf
import numpy as np
a = tf.placeholder(shape=(1,1),dtype=tf.float16)
b = tf.placeholder(shape=(1,1),dtype=tf.float16)
y= tf.placeholder(shape=(1,1),dtype=tf.float16)
addition = tf.add(a, b)
correct_prediction = tf.equal(addition,y,name=None)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
a1=[[0.2]]
b1=[[0.3]]
y1=[[0.5]]
a = sess.run(addition, feed_dict={a: a1, b: b1})
b = sess.run(correct_prediction, feed_dict={a: a1, b: b1, y: y1})
sess.close()
它给了我以下错误
*Traceback (most recent call last):
File "D:/NN/pyNN/new_main.py", line 35, in <module>
b = sess.run(correct_prediction, feed_dict={a: a1, b: b1, y: y1})
TypeError: unhashable type: 'numpy.ndarray'*
我尝试了多种提供输入和输出的方法,但我最终得到了同样的错误。任何帮助将受到高度赞赏
答案 0 :(得分:4)
您要将session.run()
的结果分配给a
。这意味着a
在第一个run
之后是一个numpy数组,将原始定义覆盖为占位符。然后你将这个数组用作第二个run
字典中的一个键,这显然不起作用。
重新命名会话上下文中的a
和b
变量应该修复它,例如
a_array = sess.run(addition, feed_dict={a: a1, b: b1})
b_array = sess.run(correct_prediction, feed_dict={a: a1, b: b1, y: y1})