1

我還沒有使用Keras,我在考慮是否使用它。是否可以保存經過訓練的圖層以在Keras上使用圖層?

我想保存一個訓練有素的圖層以備後用。例如:

  1. 我訓練模型。
  2. 然後,我獲得了訓練層t_layer
  3. 我有另一個模型來訓練它由​​,layer2,layer3
  4. 我想使用t_layer作爲layer2而不是更新此層(即t_layer不再學習)。

這可能是一個奇怪的嘗試,但我想試試這個。這在Keras上可能嗎?

回答

2

是的。

您可能必須保存圖層的權重和偏差,而不是保存圖層本身,但這是可能的。

Keras也允許你save entire models

假設你在var model有一個模型:

weightsAndBiases = model.layers[i].get_weights() 

這是numpy的陣列的列表,很可能與兩個數組:重和偏見。你可以簡單地使用numpy.save()保存這兩個數組,以後你可以創建一個類似的層,並給它的權重:

from keras.layers import * 
from keras.models import Model 

inp = Input(....)  
out1 = SomeKerasLayer(...)(inp) 
out2 = AnotherKerasLayer(....)(out1) 
.... 
model = Model(inp,out2) 
#above is the usual process of creating a model  

#supposing layer 2 is the layer you want (you can also use names)  

weights = numpy.load(...path to your saved weights)  
biases = numpy.load(... path to your saved biases) 
model.layers[2].set_weights([weights,biases]) 

可以使層untrainable(必須在模型編譯之前完成):

model.layers[2].trainable = False  

然後編譯模型:

model.compile(.....)  

而且你去那裏,一個模型,其一層爲untrainable並具有由您定義的權重和偏見,從s拍攝其他地方。

相關問題