问题
I am trying to learn tensorflow, and I was following a demo tutorial (https://www.tensorflow.org/tutorials/keras/basic_text_classification)
The error report is telling me
"Error when checking target: expected dense_1 to have shape (1,) but got array with shape (256,)"
Can someone explain to me why this won't work?
train_data = keras.preprocessing.sequence.pad_sequences(train_data,
value=word_index["<PAD>"],
padding='post',
maxlen=256) #max length
test_data = keras.preprocessing.sequence.pad_sequences(test_data,
value=word_index["<PAD>"],
padding='post',
maxlen=256)
vocal_size = 10000
model = keras.Sequential()
model.add(keras.layers.Embedding(vocal_size,16))
model.add(keras.layers.GlobalAveragePooling1D())
model.add(keras.layers.Dense(16,activation=tf.nn.relu))
model.add(keras.layers.Dense(1,activation=tf.nn.sigmoid))
model.compile(optimizer=tf.train.AdamOptimizer(),
loss='binary_crossentropy',
metrics=['accuracy'])
x_val = train_data[:10000]
partial_x_train = train_data[10000:]
y_val = train_data[:10000]
partial_y_train = train_data[10000:]
history = model.fit(partial_x_train, partial_y_train, epochs=40, batch_size=512, validation_data=(x_val, y_val), verbose=1)
回答1:
The error is in these lines
y_val = train_data[:10000]
partial_y_train = train_data[10000:]
But the tutorial says it should be
y_val = train_labels[:10000]
partial_y_train = train_labels[10000:]
train_data
represents each written review, and train_labels
represents whether the reviews are positive or negative. You want your model to learn when a written review is positive or negative.
来源:https://stackoverflow.com/questions/51661239/error-when-checking-target-expected-dense-1-to-have-shape-1-but-got-array-wi