Developer Relations / Early Stopping Example in Expert Mode Public
Primary version

Training settings

Please provide a valid number of training cycles (numeric only)
Please provide a valid number for the learning rate (between 0 and 1)
Please provide a valid training processor option

Augmentation settings

Advanced training settings

Audio training options

Neural network architecture

import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, InputLayer, Dropout, Conv1D, Conv2D, Flatten, Reshape, MaxPooling1D, MaxPooling2D, AveragePooling2D, BatchNormalization, Permute, ReLU, Softmax from tensorflow.keras.optimizers.legacy import Adam from tensorflow.keras.callbacks import EarlyStopping EPOCHS = args.epochs or 100 LEARNING_RATE = args.learning_rate or 0.005 # If True, non-deterministic functions (e.g. shuffling batches) are not used. # This is False by default. ENSURE_DETERMINISM = args.ensure_determinism # this controls the batch size, or you can manipulate the tf.data.Dataset objects yourself BATCH_SIZE = args.batch_size or 32 if not ENSURE_DETERMINISM: train_dataset = train_dataset.shuffle(buffer_size=BATCH_SIZE*4) train_dataset=train_dataset.batch(BATCH_SIZE, drop_remainder=False) validation_dataset = validation_dataset.batch(BATCH_SIZE, drop_remainder=False) # model architecture model = Sequential() model.add(Reshape((int(input_length / 40), 40), input_shape=(input_length, ))) model.add(Conv1D(8, kernel_size=3, padding='same', activation='relu')) model.add(MaxPooling1D(pool_size=2, strides=2, padding='same')) model.add(Dropout(0.25)) model.add(Conv1D(16, kernel_size=3, padding='same', activation='relu')) model.add(MaxPooling1D(pool_size=2, strides=2, padding='same')) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(classes, name='y_pred', activation='softmax')) # this controls the learning rate opt = Adam(learning_rate=LEARNING_RATE, beta_1=0.9, beta_2=0.999) callbacks.append(BatchLoggerCallback( BATCH_SIZE, train_sample_count, epochs=EPOCHS, ensure_determinism=ENSURE_DETERMINISM)) # apply early stopping callbacks.append(EarlyStopping( monitor='val_accuracy', # Monitor validation loss min_delta=0.005, # Minimum change to qualify as an improvement patience=15, # Stop after 10 epochs without improvement verbose=1, # Print messages restore_best_weights=True # Restore model weights from the epoch with the best value of the monitored quantity. )) # train the neural network model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy']) model.fit(train_dataset, epochs=EPOCHS, validation_data=validation_dataset, verbose=2, callbacks=callbacks, class_weight=ei_tensorflow.training.get_class_weights(Y_train)) # Use this flag to disable per-channel quantization for a model. # This can reduce RAM usage for convolutional models, but may have # an impact on accuracy. disable_per_channel_quantization = False
Input layer (3,960 features)
Reshape layer (40 columns)
1D conv / pool layer (8 neurons, 3 kernel size, 1 layer)
Dropout (rate 0.25)
1D conv / pool layer (16 neurons, 3 kernel size, 1 layer)
Dropout (rate 0.25)
Flatten layer
Output layer (2 classes)