【发布时间】:2020-10-08 21:35:17
【问题描述】:
我正在学习 Python Tensorflow(机器学习),以下示例之前可以运行,但现在突然开始失败。
import tensorflow as tf
import numpy as np
from tensorflow import keras
我收到以下警告:
这是我的代码:
EPOCHS = 200
BATCH_SIZE = 128
VERBOSE = 1
NB_CLASSES = 10
N_HIDDEN = 128
VALIDATION_SPLIT = 0.2
DROPOUT = 0.3
## loading MNIST dataset
# Labels have one-hot representation
mnist = keras.datasets.mnist
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
## X_train is 60000 rows of 28x28 values; we reshape it to
60000 * 784
RESHAPED = 784
#
X_train = X_train.reshape(60000, RESHAPED)
X_test = X_test.reshape(10000, RESHAPED)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
# Normalise inputs within [0,1]
X_train, X_test = X_train / 255, X_test / 255
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')
Y_train = tf.keras.utils.to_categorical(Y_train,
NB_CLASSES)
Y_test = tf.keras.utils.to_categorical(Y_test, NB_CLASSES)
# One Hot representation for labels
Y_train = tf.keras.utils.to_categorical (Y_train,
NB_CLASSES)
y_test = tf.keras.utils.to_categorical (Y_test, NB_CLASSES)
# Build the model.
model = tf.keras.models.Sequential()
model.add(keras.layers.Dense (N_HIDDEN, input_shape=
(RESHAPED,), name='dense_layer', activation='relu'))
model.add(keras.layers.Dropout (DROPOUT))
model.add(keras.layers.Dense (N_HIDDEN,
name='dense_layer_2', activation='relu'))
model.add(keras.layers.Dropout (DROPOUT))
model.add(keras.layers.Dense (NB_CLASSES,
name='dense_layer_3', activation='softmax'))
# Compile the model
model.compile(optimizer='SGD',
loss='categorical_crossentropy',
metrics=['accuracy'])
# Training the model
model.fit(X_train, Y_train,
batch_size=BATCH_SIZE,
epochs=EPOCHS,
verbose=VERBOSE,
validation_split=VALIDATION_SPLIT)
这是训练失败的地方:
InvalidArgumentError Traceback (most recent call last)
<ipython-input-10-51b78dc3a33e> in <module>
5 epochs=EPOCHS,
6 verbose=VERBOSE,
----> 7 validation_split=VALIDATION_SPLIT)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
778 validation_steps=validation_steps,
779 validation_freq=validation_freq,
--> 780 steps_name='steps_per_epoch')
781
782 def evaluate(self,
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq, mode, validation_in_fit, prepared_feed_values_from_dataset, steps_name, **kwargs)
361
362 # Get outputs.
--> 363 batch_outs = f(ins_batch)
364 if not isinstance(batch_outs, list):
365 batch_outs = [batch_outs]
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\backend.py in __call__(self, inputs)
3290
3291 fetched = self._callable_fn(*array_vals,
-> 3292 run_metadata=self.run_metadata)
3293 self._call_fetch_callbacks(fetched[-len(self._fetches):])
3294 output_structure = nest.pack_sequence_as(
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in __call__(self, *args, **kwargs)
1456 ret = tf_session.TF_SessionRunCallable(self._session._session,
1457 self._handle, args,
-> 1458 run_metadata_ptr)
1459 if run_metadata:
1460 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
InvalidArgumentError: logits and labels must be broadcastable: logits_size=[128,10] labels_size=[1280,10]
[[{{node loss_1/dense_layer_3_loss/softmax_cross_entropy_with_logits}}]]
我在这里做错了什么?
【问题讨论】:
-
除非绝对必要,否则请不要将信息作为图像共享。请参阅:meta.stackoverflow.com/questions/303812/…、idownvotedbecau.se/imageofcode、idownvotedbecau.se/imageofanexception。顺便说一句,您是否为此使用了 Conda 基础环境?
标签: python python-3.x tensorflow keras