J'essaie de définir un graphique qui forsm un modèle pour CBOW. Voici comment je définis mon graphique mais je continue à obtenir l'erreur suivante: ValueError: Impossible d'alimenter la valeur de forme (50, 2) pour Tensor 'Placeholder_1: 0', qui a la forme '(50, 1)'TensorFlow: Comment corriger ValueError: valeur d'alimentation de forme (50,2) qui a la forme (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
Cela signifie que vous alimentez un tableau de forme (50,2) dans des 'labels '(alias Placeholder_1: 0) bien que vous l'ayez défini comme un tenseur de forme (50, 1). Cependant, vous n'avez pas fourni la partie de votre code où vous avez alimenté les données dans 'labels' – Pop
donc si je le change en labels = tf.placeholder (tf.int32, shape = [taille_batch, 2]), il obtient cette erreur: tensorflow.python.framework.errors_impl.InvalidArgumentError: Les dimensions doivent être égales, mais sont 100 et 50 pour 'nce_loss/sub' (op: 'Sub') avec mettre des formes: [100,1], [50,1] –
Oui, vous pourriez le faire. En fonction de votre besoin réel – Pop