比较与tf.compat.v1.train.cosine_decay的差异
tf.compat.v1.train.cosine_decay
tf.compat.v1.train.cosine_decay(
learning_rate,
global_step,
decay_steps,
alpha=0.0,
name=None
) -> Tensor
mindspore.nn.CosineDecayLR
class mindspore.nn.CosineDecayLR(
min_lr,
max_lr,
decay_steps
)(global_step) -> Tensor
更多内容详见mindspore.nn.CosineDecayLR。
差异对比
TensorFlow:基于余弦衰减函数计算学习率。
MindSpore:与TensorFlow实现基本一致功能。在MindSpore的max_lr固定为1后,TensorFlow输出的是衰减后的学习率,而MindSpore输出的是衰减的比率。也就是说,MindSpore输出结果乘上与TensorFlow相同的learning_rate,两者就能得出一致的结果。
分类 |
子类 |
TensorFlow |
MindSpore |
差异 |
---|---|---|---|---|
参数 |
参数1 |
learning_rate |
- |
初始学习速率,MindSpore无此参数 |
参数2 |
global_step |
global_step |
- |
|
参数3 |
decay_steps |
decay_steps |
- |
|
参数4 |
alpha |
min_lr |
功能一致,参数名不同 |
|
参数5 |
name |
- |
不涉及 |
|
参数6 |
- |
max_lr |
学习率的最大值,TensorFlow无此参数 |
代码示例
MindSpore接口的max_lr固定为1,其输出结果乘上与TensorFlow相同的learning_rate,两API实现功能相同。
# TensorFlow
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
learning_rate = 0.01
global_steps = 2
decay_steps = 4
output = tf.compat.v1.train.cosine_decay(learning_rate, global_steps, decay_steps)
ss = tf.compat.v1.Session()
print(ss.run(output))
# 0.0049999994
# MindSpore
import mindspore
from mindspore import Tensor, nn
min_lr = 0.01
max_lr = 1.0
decay_steps = 4
global_steps = Tensor(2, mindspore.int32)
cosine_decay_lr = nn.CosineDecayLR(min_lr, max_lr, decay_steps)
output = cosine_decay_lr(global_steps)
adapted_output = output * 0.01
print(adapted_output)
# 0.00505