比较与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

更多内容详见tf.compat.v1.train.cosine_decay

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.009999999

# MindSpore
import mindspore
from mindspore import Tensor, nn

min_lr = 0.01
max_lr = 1
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)
print(output)
#0.0101