pytorch scheduler.step() .to(device)

optimizer.step()和scheduler.step()的区别
optimizer.step()通常用在每个mini-batch之中,而scheduler.step()通常用在epoch里面,但是不绝对,可以根据具体的需求来做。只有用了optimizer.step(),模型才会更新,而scheduler.step()是对lr进行调整。通常我们有



optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum = 0.9)
scheduler = lr_scheduler.StepLR(optimizer, step_size = 100, gamma = 0.1)
model = net.train(model, loss_function, optimizer, scheduler, num_epochs = 100)

在scheduler的step_size表示scheduler.step()每调用step_size次,对应的学习率就会按照策略调整一次。所以如果scheduler.step()是放在mini-batch里面,那么step_size指的是经过这么多次迭代,学习率改变一次


作者:_rookie_coder
来源:CSDN
原文:https://blog.csdn.net/qq_20622615/article/details/83150963
版权声明:本文为博主原创文章,转载请附上博文链接!

2、to(device)方法
Tensor的device属性可以给出其torch.device(get_device只能获取CUDA tensor)
使用x.to()方法,可以很容易将Tensor或者Module在devices间移动(而不用调用x.cpu()或者x.cuda()。
推荐使用下面的模式:

#在脚本开始的地方,指定device
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
#一些代码
#当你想创建新的Tensor或者Module时候,使用下面的方法
#如果已经在相应的device上了,将不会发生copy
input = data.to(device)
model = MyModule(...).to(device)

3、in_future 是我们输入层的大小

你可能感兴趣的:(pytorch,毕设乱七八糟)