Tensorflow错误 “unhashable type: ‘numpy.ndarray'”

    import tensorflow as tf    import numpy as np    layer1_weight = tf.Variable(tf.zeros([2 , 3]))    layer1_bias = tf.Variable(tf.zeros([3 , 1]))    layer2_weight = tf.Variable(tf.zeros([3, 1]))    layer2_bias = tf.Variable(tf.constant([[0.]]))    input = tf.placeholder(tf.float32 , [2 , 1] )    result = tf.placeholder(tf.float32 ,[1 , 1] )    data_input = [np.float32([[0.],[0.]]) , np.float32([[0.],[1.]]) ,     np.float32([[1.],[0.]]) , np.float32([[1.],[1.]])]    data_output = [np.float32([[0.]]) , np.float32([[1.]]) ,     np.float32([[1.]]) , np.float32([[0.]])]    layer1_output = tf.add(tf.matmul(tf.transpose(layer1_weight) , input) ,     layer1_bias )    layer2_output = tf.add(tf.matmul(tf.transpose(layer2_weight) ,     layer1_output) , layer2_bias)    print (data_input[0])    loss = tf.square(tf.subtract(result , layer2_output))    optimizer = tf.train.GradientDescentOptimizer(0.0001)    train_step = optimizer.minimize(loss)    sess = tf.Session()    init = tf.global_variables_initializer()    sess.run(init)    for i in range(30) :        j = int(i % 4)        result = data_output[j]        sess.run(train_step , feed_dict= {input : data_input[j] , result :         data_output[j]})        print(str(layer2_output))

代码返回了错误

TypeError: unhashable type: ‘numpy.ndarray’

我试图用神经网络实现异或门,但找不到错误所在。


回答:

首先你定义了result为一个占位符,但后来又重新定义为result = data_output[j]。这时候就出错了,因为你无法再向feed_dict中传入值了。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注