Получаю 'NoneType' object при обучении сверточной модели нейросети

Обучаю модель, однако ловлю ошибку, которая возникает в строке validation_split=0.3:

'NoneType' object is not callable

Использую для модели функцию потерь SparseCategoricalCrossentropy

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(filters=3,
                           kernel_size=(5, 5),
                           padding='same',
                           activation='relu',
                           input_shape=X_train.shape[1:]),
    tf.keras.layers.MaxPool2D(pool_size=(2, 2), padding='valid'),
    
    tf.keras.layers.Conv2D(filters=16, 
                           kernel_size=(5, 5),
                           padding='valid',
                           activation='relu'),
    tf.keras.layers.MaxPool2D(pool_size=(2, 2), padding='valid'),
    
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(32, activation=None),
    tf.keras.layers.Dropout(0.5), # использование прореживания сократило количество параметров с 35 до 20 тысяч
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.Dense(10, activation='softmax')])

callbacks = [
    keras.callbacks.EarlyStopping(
        # Прекратить обучение если `val_loss` больше не улучшается
        monitor='val_loss',
        # "больше не улучшается" определим как "не лучше чем 1e-2 и меньше"
        min_delta=1e-2,
        # "больше не улучшается" далее определим как "как минимум в течение 2 эпох"
        patience=2,  # 'patience' - терпение 
        verbose=1),
    tf.keras.callbacks.CSVLogger(
        'training.log', 
        separator=',', 
        append=False)
]

model.compile(optimizer='adam',
              loss='SparseCategoricalCrossentropy', 
              metrics=['accuracy'])
model.fit(X_train, y_train,
          epochs=10,
          batch_size=32,
          callbacks=callbacks,
          validation_split=0.3)

И ведь y_train не пуст:

print(X_train.shape)
print(y_val.shape)
print(y_test.shape)

На выходе: (40000, 32, 32, 3) (10000, 10) (10000, 1)


Ответы (0 шт):