Pytorch-tensor的感知机,链式法则
1.单层感知机
单层感知机的主要步骤:
- 1.对数据进行一个权重的累加求和,求得
∑ - 2.将
∑经过一个激活函数Sigmoid,得出值O - 3.再将
O,经过一个损失函数mse_loss,得出值loss - 4.根据
loss,以及前边所求得的值,求得loss对各个w的偏导数 - 5.更新
w值

# 单层感知机梯度的推导
# 要进行优化的是w,对w进行梯度下降
a=torch.randn(1,10)
# a是一个【1,10】的向量
w=torch.randn(1,10,requires_grad=True)
# w是一个可导的【1,10】的向量
# 1.2.经过一个sigmoid激活函数
o=torch.sigmoid(a@w.t())
print(o.shape)
# 3.经过一个mse_loss损失函数
# loss是一个标量
loss=F.mse_loss(torch.ones(1,1),o)
print(loss.shape)
# 4.求loss对w0,w1....w9的偏导数
loss.backward()
print(w.grad)
# 5.后边就可以对w进行梯度更新
输出结果
torch.Size([1, 1])
torch.Size([])
tensor([[ 3.6432e-05, -7.3545e-05, -4.3179e-05, 3.3986e-04, -9.5312e-05,
-1.7416e-04, -1.7869e-05, -2.3893e-04, -1.5513e-04, -2.1554e-05]])
多层感知机的主要步骤:
1.对数据进行一个权重的累加求和,求得
∑1,∑2,,,∑m2.将
∑1,∑2,,,∑m经过一个激活函数Sigmoid,得出值O1,O2,,,Om3.再将
O1,O2,,,Om,经过一个损失函数mse_loss,得出值loss4.根据
loss,以及前边所求得的值,求得loss对各个w的偏导数5.更新
w值

# 多层感知机梯度的推导
# 要进行优化的是w,对w进行梯度下降
a=torch.randn(1,10)
# a是一个【1,10】的向量
w=torch.randn(2,10,requires_grad=True)
# w是一个可导的【2,10】的向量
# 1.2.经过一个sigmoid激活函数
o=torch.sigmoid(a@w.t())
print(o.shape)
# 3.经过一个mse_loss损失函数
# loss是一个标量
loss=F.mse_loss(torch.ones(1,2),o)
print(loss)
# 4.求loss对w0,w1....w9的偏导数
loss.backward()
print(w.grad)
# 5.后边就可以对w进行梯度更新
输出结果
torch.Size([1, 2])
tensor(0.2823, grad_fn=<MeanBackward0>)
tensor([[-0.0654, 0.0242, 0.0045, -0.1007, 0.0259, -0.0522, -0.0327, 0.0805,-0.0180,-0.0186],
[-0.1300, 0.0481, 0.0090, -0.2002, 0.0514, -0.1037, -0.0650, 0.1599,-0.0358,-0.0371]])
链式法则:
y=f(u),u=f(x),y对x的导数,可以通过u来中间传递,也就是说
dy/dx=(dy/du)*(du/dx)
x=torch.rand(1)
w1=torch.rand(1,requires_grad=True)
b1=torch.rand(1)
w2=torch.rand(1,requires_grad=True)
b2=torch.rand(1)
y1=x*w1+b1
y2=y1*w2+b2
dy1_dw1=torch.autograd.grad(y1,[w1],retain_graph=True)[0]
dy2_dy1=torch.autograd.grad(y2,[y1],retain_graph=True)[0]
dy2_dw1=torch.autograd.grad(y2,[w1],retain_graph=True)[0]
print(dy1_dw1*dy2_dy1)
print(dy2_dw1)
输出结果
tensor([0.1867])
tensor([0.1867])
Pytorch-tensor的感知机,链式法则的更多相关文章
- Pytorch Tensor 常用操作
https://pytorch.org/docs/stable/tensors.html dtype: tessor的数据类型,总共有8种数据类型,其中默认的类型是torch.FloatTensor, ...
- Pytorch Tensor, Variable, 自动求导
2018.4.25,Facebook 推出了 PyTorch 0.4.0 版本,在该版本及之后的版本中,torch.autograd.Variable 和 torch.Tensor 同属一类.更确切地 ...
- 从头学pytorch(五) 多层感知机及其实现
多层感知机 上图所示的多层感知机中,输入和输出个数分别为4和3,中间的隐藏层中包含了5个隐藏单元(hidden unit).由于输入层不涉及计算,图3.3中的多层感知机的层数为2.由图3.3可见,隐藏 ...
- pytorch tensor与numpy转换
从官网拷贝过来的,就是做个学习记录.版本 0.4 tensor to numpy a = torch.ones(5) print(a) 输出 tensor([1., 1., 1., 1., 1.]) ...
- pytorch tensor 维度理解.md
torch.randn torch.randn(*sizes, out=None) → Tensor(张量) 返回一个张量,包含了从标准正态分布(均值为0,方差为 1)中抽取一组随机数,形状由可变参数 ...
- pytorch tensor的索引与切片
切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. * a.index_select(1 ...
- Pytorch Tensor 维度的扩充和压缩
维度扩展 x.unsqueeze(n) 在 n 号位置添加一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0) # 在第一维的位置 ...
- 【Code】numpy、pytorch实现全连接神经网络
""" 利用numpy实现一个两层的全连接网络 网络结构是:input ->(w1) fc_h -> relu ->(w2) output 数据是随机出 ...
- Pytorch 常用函数
1. torch.renorm(input, p, dim, maxnorm, out=None) → Tensor Returns a tensor where each sub-tensor of ...
- 神经网络架构PYTORCH-几个概念
使用Pytorch之前,有几个概念需要弄清楚. 什么是Tensors(张量)? 这个概念刚出来的时候,物理科班出身的我都感觉有点愣住了,好久没有接触过物理学的概念了. 这个概念,在物理学中怎么解释呢? ...
随机推荐
- 一文学会JDBC实现java和mySQL的数据连接(尚硅谷学习课程代码+笔记+思路总结)
JDBC是指数据库连接技术,用于java连接mySQL等数据库.本文详细介绍了尚硅谷课程中JDBC的学习内容和补充知识. 概述 java语言只提供规范接口,存在于java.sql.javax.sql包 ...
- 摆脱鼠标系列 - vscode 软件 最大化快捷键 - win + ↑
摆脱鼠标系列 - vscode 软件 最大化快捷键 - win + ↑ vscode默认打开不是最大化,所以按 win + 上箭头 使其最大化 不想按 F11 那个不太方便,左上角就没有项目名称了 优 ...
- Android自定义View使用系统自有属性
原文链接: Android自定义View使用系统自有属性 - Stars-One的杂货小窝 本篇默认各位有自定义View的相关知识,本篇只作为一个小知识点补充 有这样一种情况,比如说我们的一个自定义V ...
- 网络io与select
我们知道网络IO模型一共有5种,这里我们主要讨论同步IO和select多路复用的情况. 我们先从一个简单的TCP服务器的代码出发,来讨论一下这个是怎么实现的. 一个十分简单的TCP服务器 一个简单的T ...
- day16--Java常用类04
Java常用类 4.字符串相关类练习 4.1StringBuilder练习 package li.normalclass.stringbuilder; public class TestBuffer ...
- github拉项目显示timeOut
参考:https://blog.csdn.net/qq_37424778/article/details/132018804 自己尝试在github上拉项目,但是报错LibreSSL SSL_read ...
- FFmpeg命令行之 Unknown encoder ‘libx264‘
在执行下面命令进行摄像头采集时,会报错 Unknown encoder 'libx264' ffmpeg -f dshow -i video="C1E Camera" -vcode ...
- makefile 编写要点
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- github 镜像地址
亲测可用的 github 镜像地址: https://hub.nuaa.cf , https://hub.fgit.cf
- 记录--基于css3写出的流光登录(注释超详细!)
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 完整效果 对基本的表单样式进行设置 这里设置了基本的表单样式,外层用了div进行包裹,重点是运用了两个i元素在后期通过css样式勾画出一条 ...