#tensorflow #machine-learning #keras #deep-learning
#tensorflow #машинное обучение #keras #глубокое обучение
Вопрос:
Я пытаюсь создать новую keras
модель из другой обученной keras
модели
Пример кода для обучения модели, приведенный из:
#TF version 2.2.0
from tensorflow.python.keras import models, layers
from tensorflow.python.keras.models import Sequential
from tensorflow.python import keras
import tensorflow as tf
from tensorflow.python.keras.layers import Dense
from tensorflow.keras.datasets import boston_housing
(x_train,y_train), (x_test,y_test) = boston_housing.load_data()
model = Sequential()
model.add(Dense(2, activation='relu', input_shape=(13,)))
model.add(Dense(1, activation='softmax'))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(x_train, y_train,batch_size= 64,epochs= 1,validation_split=0.2)
Сохранение модели как json
json_obj = model.to_json()
new_model = keras.models.model_from_json(json_obj)
Но после создания new_model
weights
они разные:
model.get_weights() != new_model.get_weights()
Это тот же случай, если я создаю new_model
с помощью from_config()
. Вопрос в том, не должен ли вес быть одинаковым для обоих model
и new_model
как я создаю new_model
, model
или мое понимание неверно? Любые предложения полезны
Ответ №1:
to_json
не сохраняет веса модели, а только архитектуру.
Проверьте здесь: метод to_json
Я рекомендую вам использовать метод save_model.
Если вы хотите скопировать модель в другую напрямую, выполните следующие действия:
new_model = tf.keras.models.clone_model(model)
new_model.set_weights(model.get_weights())
Комментарии:
1. в таком случае, не могли бы вы объяснить, как
new_model
получить его веса?2. По умолчанию, случайная инициализация, как я думаю.