栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch实现两层BP网络

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch实现两层BP网络

import torch.nn as nn

N, D_in, H, D_out = 64, 1000, 100, 10

# 随机创建一些训练数据
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)

# 定义两层BP网络的类
class TwoLayerNet(torch.nn.Module):
    def __init__(self, D_in, H, D_out):
        super(TwoLayerNet, self).__init__()
        # define the model architecture
        self.linear1 = torch.nn.Linear(D_in, H)
        self.linear2 = torch.nn.Linear(H, D_out)
    
    def forward(self, x):
        y_pred = self.linear2(self.linear1(x).clamp(min=0))  #torch.nn.clamp类似与numpy的np.maximum(relu函数的作用)
        return y_pred

model = TwoLayerNet(D_in, H, D_out)
loss_fn = nn.MSELoss(reduction='sum')   #选择MSE作为损失loss
learning_rate = 1e-4
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

for it in range(5):
    # Forward pass,前向网络
    y_pred = model(x) # model.forward() 
    
    # compute loss,损失函数
    loss = loss_fn(y_pred, y) # computation graph
    print(it, loss.item())

    optimizer.zero_grad()   #梯度归零
    # Backward pass,求导
    loss.backward()
    
    # update model parameters,参数更新
    optimizer.step()

out

0 678.2354736328125
1 660.7021484375
2 643.60888671875
3 627.0241088867188
4 610.9411010742188
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971569.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号