2016-10-10 37 views
0

我正在使用下面的tflearn github存儲庫中的示例,我保存了它,並且希望使用不同的優化器重新加載模型。請幫忙。謝謝。中途更改學習方法

init2=False 
from __future__ import division, print_function, absolute_import 

import tflearn 
from tflearn.layers.core import input_data, dropout, fully_connected 
from tflearn.layers.conv import conv_2d, max_pool_2d 
from tflearn.layers.normalization import local_response_normalization 
from tflearn.layers.estimator import regression 

X1=sanit_tr 
Y1=sanit_trlabels 

testX=sanit_te 
testY=sanit_telabels 
# valid_dataset2=sanit_va 
# valid_labels2=sanit_valabels 

network = input_data(shape=[None, 28, 28, 1], name='input') 
network = conv_2d(network, 32, 3, activation='relu', regularizer="L2") 
network = max_pool_2d(network, 2) 
network = local_response_normalization(network) 
network = conv_2d(network, 64, 3, activation='relu', regularizer="L2") 
network = max_pool_2d(network, 2) 
network = local_response_normalization(network) 
network = fully_connected(network, 128, activation='tanh') 
network = dropout(network, 0.8) 
network = fully_connected(network, 256, activation='tanh') 
network = dropout(network, 0.8) 
network = fully_connected(network, 10, activation='softmax') 
network = regression(network, optimizer='Adagrad', learning_rate=0.1, 
        loss='categorical_crossentropy', name='target') 

model = tflearn.DNN(network, tensorboard_verbose=0) 
if not init2: 
    model.load('tflearn_model') 
model.fit({'input': X1}, {'target': Y1}, n_epoch=2, 
      validation_set=({'input': testX}, {'target': testY}), 
snapshot_step=100, show_metric=True, run_id='convnet_mnist') 

model.save('tflearn_model') 

這就是我想和新的優化器來加載:

model.load('tflearn_model') 

model.fit({'input': X1}, {'target': Y1}, n_epoch=2, 
      validation_set=({'input': testX}, {'target': testY}), 
snapshot_step=100, show_metric=True, run_id='convnet_mnist') 

model.save('tflearn_model') 

回答

0

我GUSS你只是想重新訓練模式。您只需要在加載模型之前更改完全連接的圖層並重新定義tflearn.DNN()。整個代碼是:

init2=False 
from __future__ import division, print_function, absolute_import 

import tflearn 
from tflearn.layers.core import input_data, dropout, fully_connected 
from tflearn.layers.conv import conv_2d, max_pool_2d 
from tflearn.layers.normalization import local_response_normalization 
from tflearn.layers.estimator import regression 

X1=sanit_tr 
Y1=sanit_trlabels 

testX=sanit_te 
testY=sanit_telabels 
# valid_dataset2=sanit_va 
# valid_labels2=sanit_valabels 

network = input_data(shape=[None, 28, 28, 1], name='input') 
network = conv_2d(network, 32, 3, activation='relu', regularizer="L2") 
network = max_pool_2d(network, 2) 
network = local_response_normalization(network) 
network = conv_2d(network, 64, 3, activation='relu', regularizer="L2") 
network = max_pool_2d(network, 2) 
network = local_response_normalization(network) 
network = fully_connected(network, 128, activation='tanh') 
network = dropout(network, 0.8) 
network = fully_connected(network, 256, activation='tanh') 
network = dropout(network, 0.8) 
end_network = fully_connected(network, 10, activation='softmax') 
network = regression(end_network, optimizer='Adagrad', learning_rate=0.1, 
        loss='categorical_crossentropy', name='target') 

model = tflearn.DNN(network, tensorboard_verbose=0) 
if not init2: 
    model.load('tflearn_model') 
model.fit({'input': X1}, {'target': Y1}, n_epoch=2, 
      validation_set=({'input': testX}, {'target': testY}), 
snapshot_step=100, show_metric=True, run_id='convnet_mnist') 

model.save('tflearn_model') 


network = regression(end_network, optimizer='RMSprop', learning_rate=0.1, 
        loss='categorical_crossentropy', name='target') 

model = tflearn.DNN(network, tensorboard_verbose=0) 

model.load('tflearn_model') 

model.fit({'input': X1}, {'target': Y1}, n_epoch=2, 
      validation_set=({'input': testX}, {'target': testY}), 
snapshot_step=100, show_metric=True, run_id='convnet_mnist') 

model.save('tflearn_model')