2017-01-25 6 views
4

Я использую библиотеку Keras для создания нейронной сети в python. Я загрузил данные обучения (txt-файл), инициировал сеть и «подгонял» весы нейронной сети. Затем я написал код для генерации выходного текста. Вот код:Keras model load_weights для Neural Net

#!/usr/bin/env python 

# load the network weights 
filename = "weights-improvement-19-2.0810.hdf5" 
model.load_weights(filename) 
model.compile(loss='categorical_crossentropy', optimizer='adam') 

Моя проблема: на исполнение производится следующее сообщение об ошибке:

model.load_weights(filename) 
NameError: name 'model' is not defined 

Я добавил следующее, но ошибка по-прежнему сохраняется:

from keras.models import Sequential 
from keras.models import load_model 

Любой помощь будет оценена.

ответ

9

вы должны сначала создать объект сети под названием model, скомпилировать его и только после того, как вызвать model.load_weights(fname)

рабочий пример:

from keras.models import Sequential 
from keras.layers import Dense, Activation 


def build_model(): 
    model = Sequential() 

    model.add(Dense(output_dim=64, input_dim=100)) 
    model.add(Activation("relu")) 
    model.add(Dense(output_dim=10)) 
    model.add(Activation("softmax")) 
    model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) 
    return model 


model1 = build_model() 
model1.save_weights('my_weights.model') 


model2 = build_model() 
model2.load_weights('my_weights.model') 

# do stuff with model2 (e.g. predict()) 
+2

Спасибо вам Вея много, что работает отлично. Однако мне пришлось переходить от keras.layers import Dense, Activation к: от keras.layers.core import Dense. – Deadulus