Загрузить модель кераса из текстового файла - PullRequest
2 голосов
/ 29 апреля 2019

Слои моей модели хранятся в текстовом файле, как показано ниже:

{

"model" : "Sequential",

"layers": [

{
    "L1": "Conv2D(filters = 64, kernel_size=(3,3), strides=(1, 1), padding='valid', data_format='channels_last', dilation_rate=None, activation='relu', use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, input_shape=(28,28,1))",

    "L2": "Conv2D(filters = 32, kernel_size=(3,3), strides=(1, 1), padding='valid', data_format='channels_last', dilation_rate=None, activation='relu', use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)" ,

    "L3": "Flatten()",

    "L4": "Dense(10, activation='softmax', use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)"
}
   ]

}

Я пытаюсь загрузить модель в консоли Python следующим образом:

with open('model.txt','r') as fb:
    con = json.load(fb, object_pairs_hook=ordereddict.OrderedDict)
from keras.models import Sequential
model = Sequential()
model.add(con['layers'][0]['L1'])

Но выдает следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ashutosh/.local/lib/python2.7/site-packages/keras/engine/sequential.py", line 132, in add
    'Found: ' + str(layer))

TypeError: The added layer must be an instance of class Layer. Found: Conv2D(filters = 32, kernel_size=(3,3), strides=(1, 1), padding='valid', data_format='channels_last', dilation_rate=None, activation='relu', use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

Что я должен сделать, чтобы загрузить слой Conv2D из текстового файла?

1 Ответ

1 голос
/ 29 апреля 2019

con['layers'][0]['L1'] - это строка.

Подумайте над ее выполнением, используя eval

model.add(eval(con['layers'][0]['L1']))
...