我试图定义一个图形,用于放弃CBOW的模型。下面是我如何定义我的图形,但我继续得到以下错误:ValueError:无法为张量'Placeholder_1:0'提供形状(50,2)的值,形状为'(50,1)'TensorFlow:如何修复ValueError:形状(50,2)的形状(50,1)的饲料值(50,1)
input_data = tf.placeholder(tf.int32, shape=[batch_size, embedding_size])
labels = tf.placeholder(tf.int32, shape=[batch_size, 1])
dropout_keep_prob = tf.placeholder_with_default(1.0, shape=())
nce_weights = tf.Variable(tf.truncated_normal([vocabulary_size, batch_size], stddev=1.0/math.sqrt(embedding_size)))
nce_biases = tf.Variable(tf.zeros([vocabulary_size]))
embed = tf.nn.embedding_lookup(tf.convert_to_tensor(glove_embeddings_arr), input_data)
loss = tf.reduce_mean(tf.nn.nce_loss(weights=nce_weights, biases=nce_biases, labels=labels, inputs=tf.reduce_sum(embed, 1), num_sampled=num_sampled, num_classes=vocabulary_size))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1.0).minimize(loss)
accuracy=0
return input_data, labels, dropout_keep_prob, optimizer, accuracy, loss
这意味着你正在馈送一个形状数组(50,2)在'标签'(aka。Placeholder_1:0)中,尽管你已经将它定义为一个具有形状的张量(50, 1)。然而,如果我将它更改为labels = tf.placeholder(tf.int32,shape = [batch_size,2]),则会得到此错误:您没有提供代码的一部分,因为您正在将数据提供给'labels' – Pop
。 tensorflow.python.framework.errors_impl.InvalidArgumentError:尺寸必须相同,但对于'nce_loss/sub'(op:'Sub'),其值为100和50, 放置形状:[100,1],[50,1] –
是的,你可以这样做。根据您的实际需要 – Pop