- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
运行以下代码:
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([[],[],...])
吗?
最佳答案
training_inputs & training_outputs are one hot encoded. But should each be of type array([],[]....) instead of array([[],[],...]) ?
不,输入和输出看起来很好。
该错误表明您没有提供运行优化器张量所需的占位符。从错误消息中的占位符名称 (Placeholder_150
) 可以看出您已经创建了许多占位符。
当您将笔记本与 tensorflow 结合使用时,您需要知道的一件事是,每次使用
执行单元时xs = tf.placeholder(tf.float32,[None,2000])
ys = tf.placeholder(tf.float32,[None,81])
新的占位符将添加到图表中。第一次执行时“Placeholder_0”
和“Placeholder_1”
将被添加,第二次“Placeholder_2”
和“Placeholder_3”
,等等。
问题可能是 xs
或 ys
不再引用用于计算优化器
的相同占位符。
例如,如果您首先执行,就会发生这种情况
xs = tf.placeholder(tf.float32,[None,2000])
ys = tf.placeholder(tf.float32,[None,81])
然后是从xs
和ys
构建optimizer
的部分,然后执行
xs = tf.placeholder(tf.float32,[None,2000])
ys = tf.placeholder(tf.float32,[None,81])
在运行 session 之前再次进行。
编辑:在创建优化器张量后创建占位符也是错误的。因为优化器
应该依赖于这些占位符。第一次运行笔记本时应该会出现错误,但第二次可能会导致出现错误。
关于python - 为一个热编码数据定义占位符张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995909/
我是一名优秀的程序员,十分优秀!