我的训练数据有10680个样本,我设置了如下fit函数:
model.fit(X, y, batch_size=32, epochs=5, verbose=1, validation_split=0.1)
这意味着应该使用90%(9612个样本)进行训练,另外10%用于验证,对吗?
但是当我尝试运行时,显示的训练周期是这样的:
Epoch 1/5301/301 [==============================] - 25s 85ms/step - loss: nan - accuracy: 0.4999 - val_loss: nan - val_accuracy: 0
它只使用了301个样本来进行训练。
我哪里做错了或者有什么没看到的吗?
我知道这不对,因为它曾经正常工作过(使用了9612个样本)。
这是模型:
keras.utils.normalize(X)model = Sequential()model.add(Conv2D(128, (3,3), input_shape = X.shape[1:]))model.add(Activation("relu"))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(128, (3,3)))model.add(Activation("relu"))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Flatten()) # Converts 3D feature maps to 1D feature vectorsmodel.add(Dense(128, kernel_regularizer= tf.keras.regularizers.l2(5e-5)))model.add(Activation("relu"))model.add(Dense(1, kernel_regularizer=tf.keras.regularizers.l2(5e-5)))model.add(Activation("sigmoid"))sgd = tf.keras.optimizers.SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)model.compile(loss="binary_crossentropy", optimizer=sgd, metrics=['accuracy'])model.summary()
回答:
我认为这里的301指的是批次的数量,因为你有9612个数据,并且设置了batch_size=32
,所以预期的批次数量应该是9612 / 32 = 300.375 -> 301