前提・実現したいこと
Tensorflowでレイヤーごとに学習率を変更したいです。
通常だと、学習率を設定したら全てのレイヤーに適応されると思いますが、これを各層ごとに設定する方法はありますでしょうか?
(提案論文で学習率を層ごとに設定しており、自分で記述する場合でも設定したいです。)
該当のソースコード
コードは必要そうな部分のみを抽出しています。
python
1def ESPCN(mag): 2 input_shape = Input((None, None, 1)) 3 4 conv2d_0 = Conv2D(filters = 64, 5 kernel_size = (5, 5), 6 padding = "same", 7 activation = "relu", 8 )(input_shape) 9 conv2d_1 = Conv2D(filters = 32, 10 kernel_size = (3, 3), 11 padding = "same", 12 activation = "relu", 13 )(conv2d_0) 14 conv2d_2 = Conv2D(filters = mag ** 2, 15 kernel_size = (3, 3), 16 padding = "same", 17 )(conv2d_1) 18 19 model = Model(inputs = input_shape, outputs = [conv2d_2]) 20 21 model.summary() 22 23 return model 24model = model.ESPCN() 25opt = tf.keras.optimizers.Adam(learning_rate=0.0001) 26model.compile(loss = "mean_squared_error", 27 optimizer = opt, 28 metrics = [psnr]) 29model.fit(train_x, 30 train_y, 31 epochs = 10000)
これで実行すると、全てのレイヤーに学習率0.0001が適応されますが、
conv2d_0, conv2d_1に学習率0.0001を、conv2d_2に学習率0.00001を適応させたいです。
補足情報(FW/ツールのバージョンなど)
tensorflow 2.0以降です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー