gpt4 book ai didi

python - 不可散列类型 : 'numpy.ndarray' error in tensorflow

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:51 26 4
gpt4 key购买 nike

data = pd.read_excel("/Users/madhavthaker/Downloads/Reduced_Car_Data.xlsx")

train = np.random.rand(len(data)) < 0.8

data_train = data[train]
data_test = data[~train]


x_train = data_train.ix[:,0:3].values
y_train = data_train.ix[:,-1].values
x_test = data_test.ix[:,0:3].values
y_test = data_test.ix[:,-1].values

y_label = tf.placeholder(shape=[None,1], dtype=tf.float32, name='y_label')
x = tf.placeholder(shape=[None,3], dtype=tf.float32, name='x')
W = tf.Variable(tf.random_normal([3,1]), name='weights')
b = tf.Variable(tf.random_normal([1]), name='bias')
y = tf.matmul(x,W) + b

init = tf.global_variables_initializer()

with tf.Session() as sess:
sess.run(init)
summary_op = tf.summary.merge_all()
#Fit all training data
for epoch in range(1000):
sess.run(train, feed_dict={x: x_train, y_label: y_train})

# Display logs per epoch step
if (epoch+1) % display_step == 0:
c = sess.run(loss, feed_dict={x: x_train, y_label:y_train})
print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
"W=", sess.run(W), "b=", sess.run(b))

print("Optimization Finished!")
training_cost = sess.run(loss, feed_dict={x: x_train, y_label: y_train})
print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')

这里是错误:

x---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-50102cbac823> in <module>()
6 #Fit all training data
7 for epoch in range(1000):
----> 8 sess.run(train, feed_dict={x: x_train, y_label: y_train})
9
10 # Display logs per epoch step

TypeError: unhashable type: 'numpy.ndarray'

这是我输入的两个 numpy 数组的形状:

y_train.shape = (78,)
x_train.shape = (78, 3)

我不知道是什么原因造成的。我所有的形状都匹配,我应该没有任何问题。如果您需要更多信息,请告诉我。

编辑:从我对以下其中一个答案的评论来看,似乎我必须为我的占位符指定一个特定的大小。 不令人满意。当我更改它并重新运行我的代码时,一切正常。仍然不太清楚为什么会这样。

最佳答案

在我的例子中,问题在于将输入参数命名为与占位符变量相同的名称。当然,这会将您的 tensorflow 变量替换为输入变量;导致 feed_dict 的键不同。

tensorflow 变量是可哈希的,但您的输入参数 (np.ndarray) 不是。因此,无法散列的错误是您尝试将参数作为键而不是 tensorflow 变量传递的结果。一些代码来可视化我想说的话:

a = tf.placeholder(dtype=tf.float32, shape=[1,2,3])
b = tf.identity(a)

with tf.Session() as sess:
your_var = np.ones((1,2,3))
a = your_var
sess.run(b, feed_dict={a: a})

希望这对以后遇到这个问题的人有所帮助!

关于python - 不可散列类型 : 'numpy.ndarray' error in tensorflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43081403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com