gpt4 book ai didi

python - 为一个热编码数据定义占位符张量

转载 作者:行者123 更新时间:2023-12-01 02:38:18 25 4
gpt4 key购买 nike

运行以下代码:

 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_inputstraining_outputs 的格式有关,即:

enter image description here

enter image description here

training_inputstraining_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” ,等等。

问题可能是 xsys 不再引用用于计算优化器 的相同占位符。

例如,如果您首先执行,就会发生这种情况

 xs = tf.placeholder(tf.float32,[None,2000])
ys = tf.placeholder(tf.float32,[None,81])

然后是从xsys构建optimizer的部分,然后执行

 xs = tf.placeholder(tf.float32,[None,2000])
ys = tf.placeholder(tf.float32,[None,81])

在运行 session 之前再次进行。

编辑:在创建优化器张量后创建占位符也是错误的。因为优化器应该依赖于这些占位符。第一次运行笔记本时应该会出现错误,但第二次可能会导致出现错误。

关于python - 为一个热编码数据定义占位符张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995909/

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