无法删除TypeError:unhashable类型:'numpy.ndarray'

时间:2018-02-25 11:08:15

标签: python tensorflow neural-network

我刚刚开始学习张量流编码,而且我坚持使用非常基本的代码来创建神经网络。以下是代码:

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'*

我尝试了多种提供输入和输出的方法,但我最终得到了同样的错误。任何帮助将受到高度赞赏

1 个答案:

答案 0 :(得分:4)

您要将session.run()的结果分配给a。这意味着a在第一个run之后是一个numpy数组,将原始定义覆盖为占位符。然后你将这个数组用作第二个run字典中的一个键,这显然不起作用。

重新命名会话上下文中的ab变量应该修复它,例如

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})