2017-06-16 72 views
0

假設我有一個keras模型和函數train_model(data)來訓練它的一些數據。keras分佈式模型和數據

我想知道是否可以合併/合併相同的體系結構,相同的hyperparam模型,這些模型是經過分別/獨立訓練的?

python train_model(data1) ### one one epoch 
python train_model(data2) ### one one epoch 
... 

然後

load(model1) 
load(model2) 
model3 = combine(model1, model2) 
### model3 equivalent to 2 epochs of learning. 

我試圖瞭解/找到一種方法來分發學習。

+0

您應分別建立兩個網絡(完全相同)經過訓練,然後加載的權重爲他們每個人。然後您可以使用合併圖層合併輸出。記住你應該使用'Model' API – Nain

回答

1

你已經試過了嗎?

from keras.models import load_model 

# load models - it is just the architecture 
model1 = load_model('path/to/trained/model1.h5') 
model2 = load_model('path/to/trained/model2.h5') 

# load trained weights 
model1.load_weights('path/to/weights/from/model1.hdf5') 
model2.load_weights('path/to/weights/from/model2.hdf5') 

# create a model that will merge both 1 and 2 
model = Sequential() 
model.add(Merge([model1, model2], mode = 'concat')) 
model.add(Dense(1)) # for regression, use you last Dense layer here 
model.compile(#your compiling parameters) 

# use your merged model 
model.predict(dataset_to_be_predicted) 

的想法是從here

+0

你的答案將連接兩個加載的模型以形成一個新的體系結構(最後合併兩個分支)(btw合併給我一個不推薦的警告)。但這不完全是我想要的。我想結合模型1和模型2來形成模型3,其具有與模型1和模型2相同的架構!以一種平均(或其他)權重的方式。 Model3將混合兩種模型的兩種學習。 –

+0

我不確定你能做到那麼簡單。根據體系結構保存權重,這意味着兩個不同的體系結構具有不同的權重。合併它們意味着採取平均或類似的方式,但如果數量不同,則不知道要合併的內容。你有沒有考慮過使用兩種模型進行預測並對結果進行平均?如果是分類,你可以選擇具有更高概率的班級。 –

+0

該架構是固定的,所以沒有問題。我只想知道是否有可能分別/獨立地學習曆元,然後以某種方式組合權重以獲得一個模型,就好像它已經被兩個曆元訓練一樣。 –