Keras 模型中特定于层的学习率
Layer-specific learning rate in Keras Model
在keras模型中,可以在编译时设置模型的学习率,像这样,
model.compile(optimizer=Adam(learning_rate=0.001), loss=...)
这为模型中的所有层设置了相同的学习率,但是如何为模型的每一层设置不同的学习率?
像这样,
第 1 层:0.001
第 2 层:0.05
第 3 层:0.02
等等
我如何在 keras
中执行此操作?或 tf.keras
?
您可以使用 tensorflow_addons
包中的 tfa.optimizers.MultiOptimizer
。
直接从docs看:
import tensorflow as tf
import tensorflow_addons as tfa
model = tf.keras.Sequential([
tf.keras.Input(shape=(4,)),
tf.keras.layers.Dense(8),
tf.keras.layers.Dense(16),
tf.keras.layers.Dense(32),
])
optimizers = [
tf.keras.optimizers.Adam(learning_rate=1e-4),
tf.keras.optimizers.Adam(learning_rate=1e-2)
]
optimizers_and_layers = [(optimizers[0], model.layers[0]), (optimizers[1], model.layers[1:])]
optimizer = tfa.optimizers.MultiOptimizer(optimizers_and_layers)
model.compile(optimizer=optimizer, loss="mse")
注意“每个优化器只会优化与其配对层关联的权重。”
在keras模型中,可以在编译时设置模型的学习率,像这样,
model.compile(optimizer=Adam(learning_rate=0.001), loss=...)
这为模型中的所有层设置了相同的学习率,但是如何为模型的每一层设置不同的学习率?
像这样,
第 1 层:0.001
第 2 层:0.05
第 3 层:0.02
等等
我如何在 keras
中执行此操作?或 tf.keras
?
您可以使用 tensorflow_addons
包中的 tfa.optimizers.MultiOptimizer
。
直接从docs看:
import tensorflow as tf
import tensorflow_addons as tfa
model = tf.keras.Sequential([
tf.keras.Input(shape=(4,)),
tf.keras.layers.Dense(8),
tf.keras.layers.Dense(16),
tf.keras.layers.Dense(32),
])
optimizers = [
tf.keras.optimizers.Adam(learning_rate=1e-4),
tf.keras.optimizers.Adam(learning_rate=1e-2)
]
optimizers_and_layers = [(optimizers[0], model.layers[0]), (optimizers[1], model.layers[1:])]
optimizer = tfa.optimizers.MultiOptimizer(optimizers_and_layers)
model.compile(optimizer=optimizer, loss="mse")
注意“每个优化器只会优化与其配对层关联的权重。”