pytorch梯度下降函数_Pytorch学习笔记6:激活函数/单层感知机/梯度下降求最小值实例...
#添加到学习笔记2末尾,直接运行。代码意义可以看注释。
#需要import以下库
import torch
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#需要import以上库
print('——————————激活函数——————————')
grad1=torch.linspace(-100,100,10)
print(grad1)
sigmoid=torch.sigmoid(grad1)
print(sigmoid)
grad2=torch.linspace(-2,2,10)
print(grad2)
tanh=torch.tanh(grad2)
print(tanh)
grad3=torch.linspace(-1,1,10)
print(grad3)
relu=torch.relu(grad3)
print(relu)
print('——————————激活函数——————————')
print('——————————求导——————————')
x=torch.ones(1)
w=torch.full([1],2.0,requires_grad=True)
mse=torch.nn.functional.mse_loss(torch.ones(1),x*w)#mse就是loss
print(mse)
grad=torch.autograd.grad(mse,[w])#loss对w求导
print(grad)
mse=torch.nn.functional.mse_loss(torch.ones(1),x*w)#梯度的另一种计算方法
mse.backward()
print(w.grad)
print(w.norm())
print(w.grad.norm())
#softmax激活函数
a=torch.rand(3,requires_grad=True)
print(a)
p=torch.nn.functional.softmax(a,dim=0)#dimd的参数表示在哪个维度上进行softmax
print(p)
grad=torch.autograd.grad(p[0],a,retain_graph=True)#第一个参数是pred,即y,第二个参数为label,即x
print(grad)
grad=torch.autograd.grad(p[1],a,retain_graph=True)#第一个参数是pred,即y,第二个参数为label,即x
print(grad)
grad=torch.autograd.grad(p[2],a,retain_graph=True)#第一个参数是pred,即y,第二个参数为label,即x
print(grad)
print('——————————求导——————————')
print('——————————单层感知机——————————')
x=torch.rand(1,10)
print(x)
w=torch.randn(1,10,requires_grad=True)
print(w)
o=torch.sigmoid(x@w.t())
print(o)
loss=torch.nn.functional.mse_loss(torch.full([1,1],3.0),o)
print(loss)
loss.backward()
print(w.grad)
print('——————————单层感知机——————————')
print('——————————多层感知机——————————')
x=torch.rand(1,10)
print(x)
w=torch.rand(2,10,requires_grad=True)
print(w)
o=torch.sigmoid(x@w.t())
print(o)
loss=torch.nn.functional.mse_loss(torch.ones(1,2),o)#第一个参数为预测值,第二个参数为计算值
print(loss)
loss.backward()
print(w.grad)
print('——————————多层感知机——————————')
print('——————————2D函数优化例子——————————')
def himmelblau(x):
return (x[0]**2+x[1]-11)**2+(x[0]+x[1]**2-7)**2
#画出图形
x=np.arange(-6,6,0.1)
y=np.arange(-6,6,0.1)
print('x,y range:',x.shape,y.shape)
X,Y=np.meshgrid(x,y)
print('X,Y maps:',X.shape,Y.shape)
Z=himmelblau([X,Y])
fig=plt.figure('himmelblau')#画出函数图像
ax=fig.gca(projection='3d')
ax.plot_surface(X,Y,Z,color='b', shade=True, alpha=0.7,cmap=plt.get_cmap('rainbow'),vmax=1500,vmin=0)
ax.view_init(60,-30)
ax.set_xlabel('x axis')
ax.set_ylabel('y axis')
#plt.show()
#迭代优化过程
x=torch.tensor([-2.,-2.],requires_grad=True)#赋初始值
optimizer=torch.optim.Adam([x],lr=1e-3)
for step in range(20000):
pred=himmelblau(x)
optimizer.zero_grad()#梯度清零
pred.backward()#求梯度
optimizer.step()#迭代
if step % 250 == 0:
print('step {}:x = {},f(x) = {}'.format(step,x.tolist(),pred.item()))
xx=x.tolist()#这里要转化成标量
mx=xx[0]
my=xx[1]
mp=pred.item()
ax.scatter(mx,my,mp)
plt.show()
print('——————————2D函数优化例子——————————')
pytorch梯度下降函数_Pytorch学习笔记6:激活函数/单层感知机/梯度下降求最小值实例...相关推荐
- 深度学习笔记其三:多层感知机和PYTORCH
深度学习笔记其三:多层感知机和PYTORCH 1. 多层感知机 1.1 隐藏层 1.1.1 线性模型可能会出错 1.1.2 在网络中加入隐藏层 1.1.3 从线性到非线性 1.1.4 通用近似定理 1 ...
- 机器学习理论《统计学习方法》学习笔记:第二章 感知机
<统计学习方法>学习笔记:第二章 感知机 2 感知机 2.1 感知机模型 2.2 感知机学习策略 2.2.1 数据的线性可分性 2.2.2 感知机学习策略 2.3 感知机学习算法 2.3. ...
- [Python深度学习入门]实战一·Numpy梯度下降求最小值
[深度学习入门]实战一·Numpy梯度下降求最小值 问题描述: 求解y1 = xx -2 x +3 + 0.01*(-1到1的随机值) 与 y2 = 0 的最小距离点(x,y) 给定x范围(0,3 不 ...
- OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)
OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...
- VTK学习笔记(二十一)vtk裁剪求截面面积
VTK学习笔记(二十一)vtk裁剪求界面面积 1.代码 2.CMakeLists.txt 3.运行输出 4.面积正确性验证 4.1.代码 4.2.执行结果 1.代码 #pragma once#incl ...
- pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam
来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言 很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...
- adam优化_PyTorch 学习笔记(七):PyTorch的十个优化器
本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击: tensor-yu/PyTorch_Tutorialgithub.com PyTorch提供了十种优化器,在这里就 ...
- 学习笔记三:MLP基本原理、矩阵求导术推反向传播、激活函数、Xavier
文章目录 一.BP神经网络(MLP) 1.1 感知机模型及其局限性 1.2 BP神经网络基本原理 1.3 softmax多分类.求导 1.4 二分类使用softmax还是sigmoid好? 1.5 为 ...
- [TensorFlow 学习笔记-06]激活函数(Activation Function)
[版权说明] TensorFlow 学习笔记参考: 李嘉璇 著 TensorFlow技术解析与实战 黄文坚 唐源 著 TensorFlow实战郑泽宇 顾思宇 著 TensorFlow实战Googl ...
最新文章
- Jmeter响应内容显示乱码问题的解决办法
- 关于大小型项目如何最大限度提高WebAPi性能
- LeetCode 346. 数据流中的移动平均值(队列)
- java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!
- Visual Basic编程常见问题及解答(3)
- 蚂蚁区块链第19课 联盟链创建及管理
- PBRT笔记(11)——光源
- 【SCI\EI】SCI分区,该看JCR还是中科院?
- 老陕解读:陕西10大泡馍的品尝诀窍
- 在Unity中使用Photon(网络多人联机)
- 破解TA朋友圈“仅三天可见”
- 企业为什么需要知识管理
- 张岩 - 老家 和 林青 - 老家
- window.location.href url含中文服务器收到乱码问题
- Python02-数据类型、字符编码、文件处理
- Mysql出现问题:ERROR 1149 ( 42000 (ER_SYNTAX_ERROR)): You have an error in your SQL syntax; check th解决方案
- PMP每日⑤题(五)答案
- 星速配资:白色污染整治 可降解塑料概念大幅拉升
- 批量给文件夹名加序号前缀或者序号后缀,对文件夹按序号进行重命名
- php中id如何与删除关联,QQ关联帐号如何解除?-手机QQ解除关联帐号的操作方法 - 河东软件园...
热门文章
- 戴尔t140服务器价格型号,戴尔_PowerEdge T140塔式服务器_企业服务器_网络存储服务器 | Dell 中国大陆...
- 上传自定义日志_ZKEYS系统重磅更新,新增后台数据库备份、主控运行日志管理等新功能!...
- 开源mes系统_如何让iMES系统快速落地变得so easy?
- php sql update 字段a=字段b的信息_企业级PHP求职最全精品面试100问(附答案)
- 拼图游戏的设计与实现
- eBPF:bpftrace pidnss.bt 的CentOS kernel-3.10版本
- Docker基础知识:Containers,Namespace,CGroups
- gdb调试时调用函数、设置观察点以及GDB的宏
- 基于Linux内核红黑树的TR069参数解析工具:树形结构+CPE RPC支持
- C语言局部变量、全局变量、静态局部变量、静态全局变量