0
点赞
收藏
分享

微信扫一扫

hbase最新版本配置属性

码农K 2024-02-26 阅读 17
import torch
from torch.nn import Conv2d,MaxPool2d,Sequential,Flatten,Linear
import torchvision
import torch.optim.optimizer
from torch.utils.data import DataLoader,dataset
from torch import nn
import torch.optim.optimizer


# 建模
model = nn.Linear(2,1)

#损失
loss = nn.MSELoss()
#优化
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.8)

#定义输入和标签
input = torch.tensor([[2.,7.],[1.,6.]])
y = torch.tensor([[1.],[3.]])

#输入模型数据
out= model(input)
print(out)
#计算损失
loss_fn = loss(y,out)
print(loss_fn.item())
#梯度清零
optimizer.zero_grad()
#反向传播
loss_fn.backward()
print(loss_fn.item())
#更新梯度
optimizer.step()

# 再次进行前向传播和反向传播
x = torch.tensor([[5., 6.], [7., 8.]])
y_true = torch.tensor([[11.], [15.]])
y_pred = model(x)
loss = loss_fn(y_pred, y_true)
optimizer.zero_grad()
loss.backward()
optimizer.step()



'''
optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr = 0.0001)



# SGD 就是随机梯度下降
opt_SGD         = torch.optim.SGD(net_SGD.parameters(), lr=LR)
# momentum 动量加速,在SGD函数里指定momentum的值即可
opt_Momentum    = torch.optim.SGD(net_Momentum.parameters(), lr=LR, momentum=0.8)
# RMSprop 指定参数alpha
opt_RMSprop     = torch.optim.RMSprop(net_RMSprop.parameters(), lr=LR, alpha=0.9)
# Adam 参数betas=(0.9, 0.99)
opt_Adam        = torch.optim.Adam(net_Adam.parameters(), lr=LR, betas=(0.9, 0.99))


计算损失
w=w−l_r*dw
b=b-l_r*db

dw和db分别是权重和偏置的梯度,learning_rate是学习率,控制每次更新的步长
'''

def  hook():

    # 定义模型参数
    w = torch.tensor([1.0], requires_grad=True) #requires_grad=True 的作用是让 backward 可以追踪这个参数并且计算它的梯度。
    b = torch.tensor([0.0], requires_grad=True) ##requires_grad=True 的作用是让 backward 可以追踪这个参数并且计算它的梯度。

    # 定义输入和目标输出
    x = torch.tensor([2.0])
    y_true = torch.tensor([4.0])

    # 定义损失函数
    loss_fn = torch.nn.MSELoss()

    # 定义优化器
    optimizer = torch.optim.SGD([w, b], lr=0.1)

    # 迭代训练
    for i in range(100):
        # 前向传播
        y_pred = w * x + b
        loss = loss_fn(y_pred, y_true)

        # 反向传播
        optimizer.zero_grad()
        loss.backward()
        # 提取梯度  我们使用loss.backward()计算损失函数对于模型参数的梯度,并将其保存在相应的张量的.grad属性中
        dw = w.grad
        db = b.grad
        print("dw".format(dw))
        print("db".format(db))
        # 更新模型参数
        optimizer.step()

    # 输出模型参数
    print("w = ", w)
    print("b = ", b)


记录一些api:

表3-1: 常见新建tensor的方法

函数功能
Tensor(*sizes)基础构造函数
tensor(data,)类似np.array的构造函数
ones(*sizes)全1Tensor
zeros(*sizes)全0Tensor
eye(*sizes)对角线为1,其他为0
arange(s,e,step从s到e,步长为step
linspace(s,e,steps)从s到e,均匀切分成steps份
rand/randn(*sizes)均匀/标准分布
normal(mean,std)/uniform(from,to)正态分布/均匀分布
randperm(m)随机排列
举报

相关推荐

0 条评论