When I ran a Neural Network modeling for multi-class labeling using Keras, the accuracy, loss, val_accuracy, and val_loss all seems to have nan at some point or other during the training process...
Running environment and other info
- Keras version: '2.4.0'
- TensorFlow version: '2.3.0'
- OS: Ubuntu 20.04.1 LTS
- GPU: Radeon RX 580 Series
- Python running in Jupyter Notebook (there is no library version issue)
Thank you for you kind help.
Code I used:
# data import n prep
data_irr = pd.read_csv( 'https://www.dropbox.com/s/97awk5f9rgn5k87/irrigation_machine.csv?dl=1')
df_TRAIN = data_irr.sample( frac= 78./100 )
df_TEST = data_irr.drop( df_TRAIN.index )
# TRAIN data
X_train = df_TRAIN.drop( df_TRAIN.columns[ [0,21,22,23] ], axis= 1 ); X_train
Y_train = df_TRAIN[['parcel_0','parcel_1','parcel_2']]; Y_train
X_train = X_train.to_numpy(); Y_train = Y_train.to_numpy()
# TEST data
X_test = df_TEST.drop( df_TEST.columns[[0,21,22,23]], axis= 1 ); X_test
Y_test = df_TEST[['parcel_0','parcel_1','parcel_2']]; Y_test.head()
X_test = X_test.to_numpy(); Y_test = Y_test.to_numpy()
## model architecture
model1 = keras.Sequential()
model1.add(
keras.layers.Dense( 64, activation= 'relu', input_shape= (X_train.shape[1],) )
)
model1.add(
keras.layers.Dense( 3, activation= 'sigmoid' )
)
model1.compile(
optimizer= 'adam', loss= 'categorical_crossentropy', metrics= ['accuracy']
)
model1.summary()
model1.fit(
x= X_train, y= Y_train,
epochs= 15, validation_split= 20./100,
verbose= 2
)
The result of the training is:
Epoch 1/15
39/39 - 0s - accuracy: nan - loss: nan - val_accuracy: 0.5481 - val_loss: -5.4487e-02
Epoch 2/15
39/39 - 0s - accuracy: nan - loss: nan - val_accuracy: nan - val_loss: nan
Epoch 3/15
39/39 - 0s - accuracy: 0.5433 - loss: nan - val_accuracy: 0.7981 - val_loss: 1.8837e-07
Epoch 4/15
39/39 - 0s - accuracy: nan - loss: nan - val_accuracy: 1.1190 - val_loss: 0.3816
Epoch 5/15
39/39 - 0s - accuracy: nan - loss: nan - val_accuracy: 0.8221 - val_loss: nan
Epoch 6/15
39/39 - 0s - accuracy: 0.5529 - loss: nan - val_accuracy: 0.9802 - val_loss: 0.2807
Epoch 7/15
39/39 - 0s - accuracy: 0.5473 - loss: nan - val_accuracy: 0.8893 - val_loss: 0.0128
Epoch 8/15
39/39 - 0s - accuracy: 0.5537 - loss: nan - val_accuracy: 0.8287 - val_loss: inf
Epoch 9/15
39/39 - 0s - accuracy: 0.6186 - loss: nan - val_accuracy: 0.7756 - val_loss: 1522.9906
Epoch 10/15
39/39 - 0s - accuracy: 0.5905 - loss: nan - val_accuracy: 0.8085 - val_loss: 0.1824
Epoch 11/15
39/39 - 0s - accuracy: 0.6250 - loss: nan - val_accuracy: 0.8007 - val_loss: 0.0545
Epoch 12/15
39/39 - 0s - accuracy: 0.6514 - loss: nan - val_accuracy: 0.8980 - val_loss: 13932.9346
Epoch 13/15
39/39 - 0s - accuracy: 0.5457 - loss: nan - val_accuracy: 0.8000 - val_loss: nan
Epoch 14/15
39/39 - 0s - accuracy: 0.5545 - loss: nan - val_accuracy: 1.9837e-07 - val_loss: -1.8476e+10
Epoch 15/15
39/39 - 0s - accuracy: 0.5409 - loss: nan - val_accuracy: 2.0768e-07 - val_loss: 0.5513
<tensorflow.python.keras.callbacks.History at 0x7f92602e0f98>