運行下面的代碼:定義一個佔位符,張一個熱編碼數據
loss = tf.losses.softmax_cross_entropy(onehot_labels=training_outputs, logits=logits)
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(loss)
init = tf.global_variables_initializer()
# define placeholder for inputs to network
xs = tf.placeholder(tf.float32,[None,2000])
ys = tf.placeholder(tf.float32,[None,81])
with tf.Session() as sess:
sess.run(init)
for i in range(1000):
sess.run(optimizer, feed_dict={xs:training_inputs, ys:training_outputs})
返回錯誤:
InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_150' with dtype float
[[Node: Placeholder_150 = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
我認爲這是關係到training_inputs
& training_outputs
的格式是:
training_inputs
& training_outputs
是一個熱編碼。但是,每個都應該是array([],[]....)
而不是array([[],[],...])
?
哪裏是優化和XS,YS佔位符之間的依賴?作爲xs,ys佔位符在筆記本中只聲明一次,那麼它們如何引用不同的佔位符? –
1)我看不到你的問題中的代碼。但我期望計算'logits'需要'xs','ys'應該作爲'onehot_labels參數'提供(我看到你現在使用'training_outputs',這也是一個bug )。 2)您可以多次執行佔位符的單元格。如果'logits'取決於'xs'的舊值,那麼您將會看到一個錯誤,請參閱我在答案中給出的示例。 – GeertH
您正在使用jupyter筆記本來定義您的模型,不是嗎?您的'placeholder_150'看起來像是一次又一次地運行佔位符定義。只需嘗試重新啓動筆記本電腦並按順序執行每一步。有些事情可能會改變。試一試 – nessuno