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
中传入值了。