Я хотел бы сбросить (рандомизировать) веса всех слоев в моей модели Keras (глубокое обучение). Причина в том, что я хочу иметь возможность обучать модель несколько раз с разным распределением данных без необходимости выполнять (медленную) перекомпиляцию модели каждый раз.
Вдохновленный этим обсуждением, я пробую следующий код:
# Reset weights
for layer in KModel.layers:
if hasattr(layer,'init'):
input_dim = layer.input_shape[1]
new_weights = layer.init((input_dim, layer.output_dim),name='{}_W'.format(layer.name))
layer.trainable_weights[0].set_value(new_weights.get_value())
Однако это только отчасти работает.
Отчасти, потому что я проверил некоторые значения layer.get_weights(), и они, похоже, меняются. Но когда я перезапускаю обучение, значения стоимости намного ниже начальных стоимостных значений при первом запуске. Это почти так, как будто мне удалось сбросить некоторые весы, но не все из них.
Любые советы о том, куда я иду, будут глубоко оценены. Спасибо..