目前網路上的遷移學習(Transfer Learning)的做法也是百百種,這邊整理一下我嘗試過三種方法與做法,供未來使用。
一、 Slim 做遷移
使用 tensorflow.contrib.slim 做遷移 :
- 下載Inception_v3. ckpt 下載連結https://github.com/tensorflow/models/tree/master/research/slim
2. 詳細看這兩篇
二、用Keras做Transfer Learning
用Keras做Transfer Learning 會比用slim做更為簡單一點,並且在網路上已經有豐富的資料了,十分推 !
自己的model做transfer作法也相當簡單,將Keras model訓練完成後save成h5檔。接著在其他地方load_model,並且重新fit即可。
#保存model
model.save("./model/LSTM_model.h5")#其他地方load
model = load_model("./model/LSTM_model.h5")
model.summary()#重新fit新的資料
history = model.fit(
x=x_train,
y=y_train,
batch_size=BATCH_SIZE,
epochs=NUM_EPOCHS,
validation_data=(x1_val, y_val),
callbacks = [callback],
shuffle=True
)
三、Tensorflow 官方網站
tensorflow 官方的作法,用的好的話甚至不需要寫程式,就能自動做出機器學習了。
官方那一大串英文,大致做法是這樣 :
- 將tensorflow_hub clone下載下來 https://github.com/tensorflow/hub
- 載入要做遷移的Model並解壓
- 要訓練的資料集格式為 EX: data/class_name(按class分)/各種訓練圖片
- 自 hub/examples/image_retraining/retrain.py 找出來。
- 訓練是使用cmd的方式訓練的 EX:
仔細看看retrain.py最後一百行可以知道傳入的參數有哪些,藉由調整 cmd的參數來達到訓練模型。
四、總結
好用度 : Keras > Slim > 用cmd訓練