keras(tensorflow)でCNN機械学習をしているものです。
例えば3層畳み込み後に全結合を入れて2値分類の構造を以下に示します。
python
1#モデルを作成 2model = Sequential() 3 4#conv1層目 5model.add(Conv2D(conv1, (3, 3), padding='same', activation = 'relu', input_shape=(real_size, real_size, 1))) 6model.add(AveragePooling2D(pool_size=(2, 2))) 7 8#conv2層目 9model.add(Conv2D(conv2, (3, 3), padding='same', activation = 'relu')) 10model.add(AveragePooling2D(pool_size=(2, 2))) 11 12#conv3層目 13model.add(Conv2D(conv3, (3, 3), padding='same', activation = 'relu')) 14model.add(AveragePooling2D(pool_size=(2, 2))) 15 16 17 18 19model.add(Flatten()) 20model.add(Dense(1, activation = 'sigmoid'))
もしある層だけを学習したくない場合、
python
1 2model.layers[0].trainable = False
とすると、1層目の畳み込み層の部分が学習されなくことは知っています。
実現したいことは、そのレイヤー内の重みの一部分だけを更新していきたいです。
つまり、3×3のフィルターだと例えば端の点は0に固定(更新しない)したいです。
どのようにして解決できるでしょうか。
あなたの回答
tips
プレビュー