#python #json #keras #yaml #lstm
#python #json #keras #yaml #lstm
Вопрос:
Я пытаюсь загрузить модель следующими способами, но, похоже, ничего не работает.
Json:
model_json = model.to_json()
with open('C:/Users/path/model.json', "w") as json_file:
json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("C:/Users/path/ΔΙΠΛΩΜΑΤΙΚΗ/model_json_1.h5")
print("Saved model to disk")
Загрузка из файла Json:
json_file = open('C:/Users/path/model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json, {"tf":tf})
# load weights into new model
loaded_model.load_weights("C:/Users/path/model_json_1.h5")
print("Loaded model from disk")
Yaml:
model_yaml = model.to_yaml()
with open("C:/Users/path/model.yaml", "w") as yaml_file:
yaml_file.write(model_yaml)
# serialize weights to HDF5
model.save_weights("C:/Users/path/model_yam.h5")
print("Saved model to disk")
Загрузить модель из файла Yaml:
yaml_file = open('C:/Users/path/model.yaml', 'r')
loaded_model_yaml = yaml_file.read()
yaml_file.close()
loaded_model = model_from_yaml(loaded_model_yaml)
# load weights into new model
loaded_model.load_weights("C:/Users/path/model_yam.h5")
print("Loaded model from disk")
Я также пытаюсь выполнить следующее:
model.save("C:/Users/user/Desktop/ΔΙΠΛΩΜΑΤΙΚΗ/model_save.h5")
Загрузить модель:
model = load_model('C:/Users/path/model_save.h5', compile = False)
Я получаю ту же ошибку всеми вышеперечисленными способами.
ОШИБКА:
AttributeError: 'str' object has no attribute 'decode'
Я строю свою модель следующим образом.
Модель:
print('Build model...')
main_input = Input(shape=(maxlen, num_features), name='main_input')
l1 = LSTM(100, implementation=2, kernel_initializer='glorot_uniform', return_sequences=True, dropout=0.2)(main_input) # the shared layer
b1 = BatchNormalization()(l1)
l2_1 = LSTM(100, implementation=2, kernel_initializer='glorot_uniform', return_sequences=False, dropout=0.2)(b1) # the layer specialized in activity prediction
b2_1 = BatchNormalization()(l2_1)
l2_2 = LSTM(100, implementation=2, kernel_initializer='glorot_uniform', return_sequences=False, dropout=0.2)(b1) # the layer specialized in time prediction
b2_2 = BatchNormalization()(l2_2)
act_output = Dense(len(target_chars), activation='softmax', kernel_initializer='glorot_uniform', name='act_output')(b2_1)
time_output = Dense(1, kernel_initializer='glorot_uniform', name='time_output')(b2_2)
model = Model(inputs=[main_input], outputs=[act_output, time_output])
opt = Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, schedule_decay=0.004, clipvalue=3)
lr_reducer = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=10, verbose=0, mode='auto', min_delta=0.0001, cooldown=0, min_lr=0)
model.fit(X, {'act_output':y_a, 'time_output':y_t}, validation_split=0.2, verbose=2, callbacks=[early_stopping, model_checkpoint, lr_reducer], batch_size=maxlen, epochs=500)
Возможно, эта ошибка означает, что я неправильно строю свою модель.?
Что я могу сделать, чтобы исправить эту ошибку.?
Спасибо.
Комментарии:
1. Возможно, версия TensorFlow, которую вы использовали для сохранения модели, отличается от той, которую вы используете для загрузки модели
2. Попробуйте это:
load_model(model_path, compile=False)