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

人工智能基础-作业1

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

人工智能基础-作业1

1.安装pycharm

-链接安装pycharm教程
-安装成功页面

安装pytorch

链接微软官方安装pytorch教程
安装中…

安装成功

python实现反向传播 模型为w1xx+w2*x+b

参考代码

import torch
x_data = [1, 2, 3]
y_data = [2, 4, 6]
# 三个tensor
w1 = torch.tensor([1.0])
w1.requires_grad = True
w2 = torch.tensor([2.0])
w2.requires_grad = True
b = torch.tensor([1.0])
b.requires_grad = True


def forward(x):
    return w1 * x * x + w2 * x + b


def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) * (y_pred - y)


print("训练之前", 4, forward(4).item())
# 训练过程
for epoch in range(10):
    for x, y in zip(x_data, y_data):  # 把x_data和y_data整理成一个样本(x,y)
        l = loss(x, y)  # 前馈计算,并计算出损失值,张量
        l.backward()  # 后向计算,自动把计算图中需要梯度的地方求出,存到tensor的w中,释放计算图,下次进行loss计算时,在准备下一次的计算图
        # print('grad:', x, y, w1.grad.item(), w2.grad.item())
        w1.data = w1.data - w1.grad.data * 0.01  # 张量loss中包含tensor类型的data和grad,要获得梯度(数值),而w.grad计算图,需要w.grad.data数值
        w1.grad.data.zero_()
        w2.data = w2.data - w2.grad.data * 0.01  # 张量loss中包含tensor类型的data和grad,要获得梯度(数值),而w.grad计算图,需要w.grad.data数值
        w2.grad.data.zero_()
        b.data = b.data - b.grad.data * 0.01  # 张量loss中包含tensor类型的data和grad,要获得梯度(数值),而w.grad计算图,需要w.grad.data数值
        b.grad.data.zero_()
    # print("progress", epoch, l)
print("训练之后", 4, forward(4).item())

训练10次:
训练100次:

训练1000次:
训练10000次:

PyTorch Autograd自动求导

eg:y=x^2,在x=3的时候它的导数为6
代码实现:

import torch
x = torch.tensor(3.0, requires_grad=True)
y = torch.pow(x, 2)
# 判断x,y是否是可以求导的
print(x.requires_grad)
print(y.requires_grad)
# 求导,通过backward函数来实现
y.backward()
# 查看导数,也即所谓的梯度
print(x.grad)

结果:
和预测结果一样。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839698.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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