Обучение CNN-данных (ошибка значения в model.fit)

#python #conv-neural-network

#питон #conv-нейронная сеть

Вопрос:

Пытаюсь обучить модель, но она останавливается в конце обучения первой эпохи. Попробовал добавить time.sleep(0.1), но это не сработало. Код :

 X_train, X_test, y_train , y_test = train_test_split(data, labels, test_size = 0.2 , random_state = 42)

print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)

y_train = to_categorical(y_train,43)

model = Sequential()
model.add(Conv2D(filters=32, kernel_size = (5,5), activation= 'relu', input_shape = X_train.shape[1:])) 
model.add(Conv2D(filters=32, kernel_size = (5,5), activation= 'relu'))
model.add(MaxPool2D(pool_size= (2,2)))
model.add(Dropout(rate= 0.25))
model.add(Conv2D(filters=64, kernel_size = (3,3), activation= 'relu'))
model.add(Conv2D(filters = 64, kernel_size = (3,3) , activation = 'relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(rate=0.25))
model.add(Flatten())
model.add(Dense(256, activation = 'relu'))
model.add(Dropout(rate = 0.5)  )
model.add(Dense(43, activation = 'softmax'))
model.compile(loss= 'categorical_crossentropy', optimizer = 'adam' , metrics = ['accuracy'])

epochs = 15
history = model.fit(X_train, y_train, batch_size=32, epochs=epochs,verbose = 1  ,validation_data=(X_test, y_test))
time.sleep(0.1)
model.save("my_model.h5")
 

ошибка :

 Epoch 1/15
980/981 [============================>.] - ETA: 0s - loss: 0.4359 - accuracy: 0.8742
 

 ValueError                                Traceback (most recent call last)
 <ipython-input-8-aa8cc327989f> in <module>
      1 epochs = 15
----> 2 history = model.fit(X_train, y_train, batch_size=32, epochs=epochs,verbose = 1,validation_data=(X_test, y_test))
    3 time.sleep(0.1)
    4 model.save("my_model.h5")
      
 

Комментарии:

1. Это полное сообщение об ошибке?

2. Нет ~ AppDataRoamingPythonPython38site-packagestensorflowpythonkerasenginetraining.py в _method_wrapper(self, *аргументы, ** kwargs) 106 определение _method_wrapper(self, * аргументы, ** kwargs): 107 если не self._in_multi_worker_mode(): # pylint: отключить=защищенный доступ —> 108 метод возврата (self, * аргументы, **kwargs) 109 110 # run_distribute_coordinator уже работает внутри.

Ответ №1:

Решена проблема, ошибка заключалась в том, что метки в y_test не были преобразованы в одну горячую кодировку.

Изменения: добавлена эта строка

 y_test = to_categorical(y_test, 43)