Hỏi về Keras, Transfer learning

deep-learning
keras

#1

Mình mới dùng keras, trong quá trình train có một thông số không hiểu, mong các bạn giúp đỡ. Đây là kết qảu trong quá trình train:

8928/9000 [============================>.] - ETA: 0s - loss: 21.0686 - acc: 0.1397 8960/9000 [============================>.] - ETA: 0s - loss: 21.0373 - acc: 0.1404 8992/9000 [============================>.] - ETA: 0s - loss: 21.0079 - acc: 0.1407 9000/9000 [==============================] - 77s 9ms/step - loss: 20.9995 - acc: 0.1407 - val_loss: 11.4749 - val_acc: 0.3462 Epoch 5/11

32/9000 […] - ETA: 1:07 - loss: 11.4386 - acc: 0.4688 64/9000 […] - ETA: 1:07 - loss: 11.1913 - acc: 0.4531

Các bạn cho mình hỏi:

  1. Cơ chế update model của keras là gì, sau mỗi step thì loss giảm nhẹ, accuracy tăng nhẹ mà sau 1 epoch loss đột ngột giảm, accuracy đột nhiên tăng.(mình dùng history= model.fit(x_train, y_train_one_shot, epochs=11, batch_size=32, validation_data=(x_val,y_val_one_shot ), verbose=1))
  2. Chỗ 77s 9ms/step có vẻ không đúng lắm vì mình có 9k ảnh, mỗi batch 32 là khoảng 300 steps, nhân với 9ms thì mới đc 2.7s trong khi 1 epoch là 77s.

#2

*Với việc theo dõi loss, acc tốt nhất là bạn nên:

  1. Visualize bằng code:
history_dict = history.history
import matplotlib.pyplot as plt
loss_values = history_dict['loss']
val_loss_values = history_dict['val_loss']
acc = history_dict['acc']
epochs = range(1,len(acc)+1)
plt.plot(epochs,loss_values,'bo',label = 'Training loss')
plt.plot(epochs,val_loss_values,'b',label='Validation loss')
plt.title('Training and validation loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()
  1. Sử dụng Tensorflow Board (nếu bạn sử dụng backend là Tensorflow)
  • Vào terminal:

         cd đường dẫn code
    
         mkdir my_log_dir 
    
  • Thêm vào code chính:

callbacks = [keras.callbacks.TensorBoard(log_dir='my_log_dir',
                                         histogram_freq=1,
                                         embeddings_freq=1,
                                        )]

Vào terminal: tensorboard --logdir=my_log_dir

Vào giao diện web: http://localhost:6006

  • Về thời gian vì cũng ko quá chính xác đâu bạn. Theo như mình chạy nhiều model thì con số 9ms/step là của 1 sample đó ( không phải của 1 batch size đâu). Tức là xấp xỉ 77s/9000. Bạn chủ yếu quan tâm đến thời gian train 1 epoch mất bao lâu.

Hi vọng có thể giúp được bạn.


#3

Cám ơn bạn nhé, mình sẽ tìm hiểu thêm!


#4

Nếu câu trả lời của mình bạn thấy thỏa mãn thì tích vào dấu “v” nhé.


#5

Visualize rồi thì mình lấy căn cứ gì để đánh giá mô hình ạ. Khi nào căn cứ vào val_loss và khi nào thì căn cứ vào val_acc ạ