Я пытаюсь вставить слой dropout
в мою модель. Поэтому я загружаю старую модель, создаю новую архитектуру модели и переношу веса.
Однако, когда я сохраняю новую модель, объем памяти намного меньше:
113 мегабайт против исходных 338 мегабайт.
Я подозреваю, что я, должно быть, делаю ошибку в процессе, но модель, кажется, сохраняет и работает. Точность примерно на 15% ниже, но я не могу определить, является ли это эффектом отсева.
Вот мой код:
def add_dropout(layer_num = None, prob = .4):
#layer num is where you will insert the dropout layer
model = load_model(model_path)
layers_set1 = [layer for layer in model.layers[:layer_num + 1]]
x = layers_set1[-1].output
x = Dropout(prob, name = "drop_test1")(x)
layers_set2 = [layer for layer in model.layers[layer_num+1:]]
for layer in layers_set2:
print(layer)
x = layer(x)
final_model = Model(inputs = layers_set1[0].input, outputs = x)
for num, layer in enumerate(layers_set1):
weights = layer.get_weights()
final_model.layers[num].set_weights(weights)
for num, layer in enumerate(layers_set2, start = len(layers_set1) + 1):
weights = layer.get_weights()
final_model.layers[num].set_weights(weights)
final_model.save(os.path.join(save_dir, "dropout_added.h5"))