やりたいこと
kerasを使ったニューラルネットワークの構築で新規層(未学習)を学習済のモデルに挿入したい。
下記のやってみたことのエラー解決法もしくは異なる解決法を知りたいです。
具体的には
model = Sequential() model = keras.models.load_model('weights.h5', compile=False) model.add(Embedding(vocab_size, 50, input_length=embed-1)) model.add(keras.layers.Conv1D(192,10,activation='relu')) model.add(BatchNormalization()) model.add(LSTM(224,return_sequences=True)) model.add(LSTM(384,return_sequences=True)) model.add(Flatten()) model.add(Dropout(0.4)) model.add(Dense(1, activation='linear')) model.trainable=False
この重みをloadした層に下記の層を挿入したい。
BatchNormalization() Dense(100,activation='selu') Conv1D(128, 3, padding='same', input_shape=(64, 1)) BatchNormalization() Dense(100,activation='selu') Conv1D(256, 3, padding='same', input_shape=(64, 1)) Dropout(0.1) Conv1D(512, 3, padding='same', input_shape=(embed-1, 1),activation='softplus')
やったこと
下記URLを参考にさせていただきました。
https://qiita.com/koshian2/items/04853466d77bab360c9d
def create_normal_model(): model = Sequential() model = keras.models.load_model('weights.h5') model.add(Embedding(vocab_size, 50, input_length=embed-1)) model.add(keras.layers.Conv1D(192,10,activation='relu')) model.add(BatchNormalization()) model.add(LSTM(224,return_sequences=True)) model.add(LSTM(384,return_sequences=True)) model.add(Flatten()) model.add(Dense(100, activation='relu')) model.add(Dropout(0.4)) model.add(Dense(1, activation='linear')) model.trainable=False return model def insert_res_model(): model = create_normal_model() for i, layer in enumerate(model.layers): if i==0: input = layer.input x = input if "Embedding" in layer.name: layer.activation=activation.linear x=layer(x) x= BatchNormalization()(x) x= Dense(100,activation='selu')(x) x= Conv1D(128, 3, padding='same', input_shape=(64, 1))(x) x= BatchNormalization()(x) x= Dense(100,activation='selu')(x) x= Conv1D(256, 3, padding='same', input_shape=(64, 1))(x) x= Dropout(0.1)(x) x= Conv1D(512, 3, padding='same', input_shape=(embed-1, 1), activation='softplus')(x) else: x = layer(x) res_model=Model(input,x) return res_model model=insert_res_model() model.summary()
出力エラー
Traceback (most recent call last): File "mask.py", line 144, in <module> model=insert_res_model() File "mask.py", line 122, in insert_res_model model = create_normal_model() File "smiles2vec_mask.py", line 105, in create_normal_model model = keras.models.load_model('weights.h5', compile=False) File "/anaconda3/lib/python3.6/site-packages/keras/engine/saving.py", line 419, in load_model model = _deserialize_model(f, custom_objects, compile) File "/anaconda3/lib/python3.6/site-packages/keras/engine/saving.py", line 221, in _deserialize_model model_config = f['model_config'] File "/anaconda3/lib/python3.6/site-packages/keras/utils/io_utils.py", line 302, in __getitem__ raise ValueError('Cannot create group in read only mode.') ValueError: Cannot create group in read only mode.
わかるかたがいればよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。