反向传播+代码实现

y=wx的反向传播代码实现 

import torch
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]#w是Tensor(张量类型),Tensor中包含data和grad,data和grad也是Tensor。
# grad初始为None,调用l.backward()方法后w.grad为Tensor,
# 故更新w.data时需使用w.grad.data。
# 如果w需要计算梯度,那构建的计算图中,跟w相关的tensor都默认需要计算梯度。
w=torch.Tensor([1.0])
#True:需要计算梯度
w.requires_grad=Truedef forward(x):return x * w# 构建计算图
def loss(x,y):y_pred=forward(x)return (y_pred-y)*(y_pred-y)print("训练之前:",4,forward(4).item())
for epoch in range(100):for x,y in zip(x_data,y_data):l=loss(x,y)#自动将需要梯度的地方计算出来#存储到w中#l.backward()会把计算图中所有需要梯度(grad)的地方都会求出来,# 然后把梯度都存在对应的待求的参数中,最终计算图被释放。l.backward()print("grad:",x,y,w.grad.item())#grad是修改后的w权值#data是转化为标量 不能使用张量计算 会发生自动类型转换w.data=w.data-0.01*w.grad.data#要单个所以要释放,如果是连续的则不需要清零# w.data.zero_() 错w.grad.data.zero_()print("进程轮数:",epoch,l.item())
print("训练之后:",4,forward(4).item())

y=w1x+w2x+b的反向传播代码实现 

import torchx_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]
#学习率
learn_rate=0.01#True:需要计算梯度
w1=torch.tensor([1.0])
w1.requires_grad=Truew2=torch.tensor([1.0])
w2.requires_grad=Trueb=torch.tensor([1.0])
b.requires_grad=Truedef forward(x):return w1*x+w2*x+bdef loss(x,y):y_test=forward(x)return (y_test-y)*(y_test-y)print("训练之前:",4,forward(4).item())
for epoch in range(100):for x,y in zip(x_data,y_data):#损失函数原型l=loss(x,y)l.backward()#pytorch中,.item()方法 是得到一个元素张量里面的元素值print("grad:",x,y,w1.grad.item(),w2.grad.item(),b.grad.item())#orch.autograd包主要功能是完成网络反向传播时的链式求导#过程大致为:先通过输入的tensor数据类型的变量在神经网络的前向传播中生成一张计算图,#然后再根据这个计算图和输出结果准确计算出各个参数需要更新的梯度,并通过完成反向传播对参数进行梯度更新。#在实践中使用autograd包中的variable类进行封装,封装之后计算图中每一个节点就是一个variable对象#因此如果用X代表选中的节点,那么X.data 就是tensor数据对象,X.grad就是X的梯度对象,X.grad.data就是X的梯度数据值啦w1.data=w1.data-learn_rate*w1.grad.dataw2.data=w2.data-learn_rate*w2.grad.datab.data=b.data-learn_rate*b.grad.dataw1.grad.data.zero_()w2.grad.data.zero_()b.grad.data.zero_()print("轮数:",epoch,l.item())
print("训练之后:",4,forward(4).item())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研专业课计算机网络调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...

一、外单位考生调剂1.接收调剂要求报考学科门类 政治理论 外国语 业务课一 业务课二 总分工学(08) 同国家复试分数线基本要求 325工程(0852) 同国家复试分数线基本要求 325中心调剂指标预计在4人左右,均为计算机技术专业。2.调剂流程1、3月26日14:00至3月…

linux目录树(书本上看到)

LINUX的目录树 /bin bin 是binary 的缩写。这个目录是对UNIX 系统习惯的沿袭,存放着使用者最经常使用的命令。例如:cp,ls,cat。 /boot 这里存放的是启动LINUX 时使用的一些核心文件。 /dev dev 是device(设备)的缩写。这个目录下是所有LINUX 的外部设备,其功能类似DOS 下的.…

Collection中Set集合在应用中常见的方法和注意点

Set集合 : 元素无序的,元素不允许重复。 ---->HashSet : 存值方式使用哈希表来存值的。 原理 : 如果HashSet中存放对象 ,首先会调用对象的hashCode方法获取到哈希值,通过哈希值做移为等运算&#xff…

【Pytorch神经网络实战案例】04 使用Pytorch实现线性回归

import torchx_data torch.tensor([[1.0],[2.0],[3.0]]) y_datatorch.tensor([[2.0],[4.0],[6.0]])#重点在于构造计算图 pytorch会自动计算梯度 #Zwxb 就是一个线性单元class LinearModel(torch.nn.Module):#Module的对象会自动实现backword()的过程#构造函数def __init__(self…

html 网页制作标签,html网页制作标签最全版.doc

html网页制作标签最全版MetaName(页面描述信息)keywords。关键字,格式:description。描述,格式:author。 作者,格式:generator。编写工具,格式:robots。 机器人,格式&…

menu菜单

[1]添加菜单方式 通过一个布局 在res下 meun目录下创建一个布局 <menu xmlns:android"http://schemas.android.com/apk/res/android" ><itemandroid:id"id/action_settings1"android:orderInCategory"10"android:title"hahah"…

计算机网络阅读报告,计算机网络实验二报告

计算机网络实验二报告 (5页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;11.90 积分&#xfeff;计算机网络实验报告课程_ 计算机网络 _ 实验名称 TCP/IP协议分析与验证 姓 名 实 验 日 期&#xff…

LCD驱动移植(二)

LCD驱动的话会在MINI2440里是向Plaform注册的一个驱动 Plaform的话可以在网上查查这方面的资料&#xff0c;主要要注意这两个函数&#xff0c;如下&#xff1a; (1)platform_device_register()注册平台XX设备。 (2)platform_driver_register()注册平台XX驱动。 下面贴出LCD驱…

使用Pytorch处理多维特征的输入

下图这个预测一个人在一年之后得糖尿病的概率的例子&#xff0c;这个时候我们的输入将会有很多的指标。你可以把它看成是我们体检的各种值。最后一排的外代表了他是否会得糖尿病。 那么多维的特征输入应该怎么办呢&#xff1f;我们就需要把每一个特征x付以相应的权重。在进行逻…

dubbo学习 三 dubbox概述

当当网根据自身的需求&#xff0c;对dubbo进行了扩展就叫成了dubbox。具体的使用方法可以参照官网各种例子&#xff1a;http://dangdangdotcom.github.io/dubbox/ 支持rest风格远程调用 之前了解过restful服务具体是什么&#xff0c;resteasy也了解过&#xff0c;所以看到就可以…

非大学生学计算机,浅谈非计算机专业大学生的计算机教学

第 卷 年 月黑 龙 江 科 学浅谈非计 算机 专业 大学生的计算机教 学曾 宇(辽源职业技术学院医药分院 &#xff0c;吉林 辽源 )摘 要 &#xff1a;为了提高大学生计算机应用能力 &#xff0c;适应社会及用人单位的需求 &#xff0c;对 非计算机专业大学生的计 算机教学提 出了更…

linux platform 驱动模型分析

一. 概述platform设备和驱动与linux设备模型密切相关。platform在linux设备模型中&#xff0c;其实就是一种虚拟总线没有对应的硬件结构。它的主要作用就是管理系统的外设资源&#xff0c;比如io内存,中断信号线。现在大多数处理器芯片都是soc&#xff0c;如s3c2440&#xff0c…

使用Pytorch完成多分类问题

多分类问题在最后的输出层采用的Softmax Layer&#xff0c;其具有两个特点&#xff1a;1.每个输出的值都是在(0,1)&#xff1b;2.所有值加起来和为1. 假设是最后线性层的输出&#xff0c;则对应的Softmax function为&#xff1a; 输出经过sigmoid运算即可是西安输出的分类概率…

PyTorch的nn.Linear()详解

1. nn.Linear() nn.Linear()&#xff1a;用于设置网络中的全连接层&#xff0c;需要注意的是全连接层的输入与输出都是二维张量 一般形状为[batch_size, size]&#xff0c;不同于卷积层要求输入输出是四维张量。其用法与形参说明如下&#xff1a; in_features指的是输入的二维…

罗彻斯特大学计算机科学系专业排名,罗切斯特大学计算机科学专业

罗切斯特大学(University of Rochester&#xff0c;U of R)建立于1850年&#xff0c;是一所美国著名的私立研究型大学&#xff0c;“新常春藤”联盟之一&#xff0c;北美大学协会(AAU)成员、世界大学联盟成员。360老师介绍&#xff0c;学校的7位学者是美国国家科学院院士&#…

系统权限管理设计 (转)

权限设计&#xff08;初稿&#xff09; 1. 前言&#xff1a; 权限管理往往是一个极其复杂的问题&#xff0c;但也可简单表述为这样的逻辑表达式&#xff1a;判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。针对不同的应用&#xff0c;需要根据项目的实…

卷积神经网络(基础篇)

说明 0、前一部分叫做Feature Extraction&#xff0c;后一部分叫做classification 1、每一个卷积核它的通道数量要求和输入通道是一样的。这种卷积核的总数有多少个和你输出通道的数量是一样的。 2、卷积(convolution)后&#xff0c;C(Channels)变&#xff0c;W(width)和H(Heig…

mini2440驱动分析之LCD

mini2440集成了lcd控制器的接口,板子上接的lcd硬件是统宝240*320,TFT型lcd。lcd驱动对应的文件为s3c2410fb.c。要读懂这个驱动必须了解linux platform子系统的知识。因为这个驱动是以platform驱动的形式注册到内核。而且还需要frambuffer驱动的知识,因为这个驱动还是frambuf…

数组长度改变方法

package com.lovo.array;public class SuperIntArray {//属性public int[] array;private int index;//代表两层含义&#xff1a;1、下一个元素所在的下标&#xff1b;2、已经放了多少个元素。public SuperIntArray(){this.array new int[20];}//行为//放入元素public void ad…

Inception(Pytorch实现)

论文在此: Going deeper with convolutions 论文下载: https://arxiv.org/pdf/1409.4842.pdf 网络结构图: import torch import torch.nn as nn import torch.nn.functional as Fclass Inception3(nn.Module):def __init__(self, num_classes1000, aux_logitsTrue, transform…