#添加到学习笔记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:激活函数/单层感知机/梯度下降求最小值实例...相关推荐

  1. 深度学习笔记其三:多层感知机和PYTORCH

    深度学习笔记其三:多层感知机和PYTORCH 1. 多层感知机 1.1 隐藏层 1.1.1 线性模型可能会出错 1.1.2 在网络中加入隐藏层 1.1.3 从线性到非线性 1.1.4 通用近似定理 1 ...

  2. 机器学习理论《统计学习方法》学习笔记:第二章 感知机

    <统计学习方法>学习笔记:第二章 感知机 2 感知机 2.1 感知机模型 2.2 感知机学习策略 2.2.1 数据的线性可分性 2.2.2 感知机学习策略 2.3 感知机学习算法 2.3. ...

  3. [Python深度学习入门]实战一·Numpy梯度下降求最小值

    [深度学习入门]实战一·Numpy梯度下降求最小值 问题描述: 求解y1 = xx -2 x +3 + 0.01*(-1到1的随机值) 与 y2 = 0 的最小距离点(x,y) 给定x范围(0,3 不 ...

  4. OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)

    OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...

  5. VTK学习笔记(二十一)vtk裁剪求截面面积

    VTK学习笔记(二十一)vtk裁剪求界面面积 1.代码 2.CMakeLists.txt 3.运行输出 4.面积正确性验证 4.1.代码 4.2.执行结果 1.代码 #pragma once#incl ...

  6. pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言     很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...

  7. adam优化_PyTorch 学习笔记(七):PyTorch的十个优化器

    本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击: tensor-yu/PyTorch_Tutorial​github.com PyTorch提供了十种优化器,在这里就 ...

  8. 学习笔记三:MLP基本原理、矩阵求导术推反向传播、激活函数、Xavier

    文章目录 一.BP神经网络(MLP) 1.1 感知机模型及其局限性 1.2 BP神经网络基本原理 1.3 softmax多分类.求导 1.4 二分类使用softmax还是sigmoid好? 1.5 为 ...

  9. [TensorFlow 学习笔记-06]激活函数(Activation Function)

    [版权说明] TensorFlow 学习笔记参考:  李嘉璇 著 TensorFlow技术解析与实战 黄文坚 唐源 著 TensorFlow实战郑泽宇  顾思宇 著 TensorFlow实战Googl ...

最新文章

  1. Jmeter响应内容显示乱码问题的解决办法
  2. 关于大小型项目如何最大限度提高WebAPi性能
  3. LeetCode 346. 数据流中的移动平均值(队列)
  4. java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!
  5. Visual Basic编程常见问题及解答(3)
  6. 蚂蚁区块链第19课 联盟链创建及管理
  7. PBRT笔记(11)——光源
  8. 【SCI\EI】SCI分区,该看JCR还是中科院?
  9. 老陕解读:陕西10大泡馍的品尝诀窍
  10. 在Unity中使用Photon(网络多人联机)
  11. 破解TA朋友圈“仅三天可见”
  12. 企业为什么需要知识管理
  13. 张岩 - 老家 和 林青 - 老家
  14. window.location.href url含中文服务器收到乱码问题
  15. Python02-数据类型、字符编码、文件处理
  16. Mysql出现问题:ERROR 1149 ( 42000 (ER_SYNTAX_ERROR)): You have an error in your SQL syntax; check th解决方案
  17. PMP每日⑤题(五)答案
  18. 星速配资:白色污染整治 可降解塑料概念大幅拉升
  19. 批量给文件夹名加序号前缀或者序号后缀,对文件夹按序号进行重命名
  20. php中id如何与删除关联,QQ关联帐号如何解除?-手机QQ解除关联帐号的操作方法 - 河东软件园...

热门文章

  1. 戴尔t140服务器价格型号,戴尔_PowerEdge T140塔式服务器_企业服务器_网络存储服务器 | Dell 中国大陆...
  2. 上传自定义日志_ZKEYS系统重磅更新,新增后台数据库备份、主控运行日志管理等新功能!...
  3. 开源mes系统_如何让iMES系统快速落地变得so easy?
  4. php sql update 字段a=字段b的信息_企业级PHP求职最全精品面试100问(附答案)
  5. 拼图游戏的设计与实现
  6. eBPF:bpftrace pidnss.bt 的CentOS kernel-3.10版本
  7. Docker基础知识:Containers,Namespace,CGroups
  8. gdb调试时调用函数、设置观察点以及GDB的宏
  9. 基于Linux内核红黑树的TR069参数解析工具:树形结构+CPE RPC支持
  10. C语言局部变量、全局变量、静态局部变量、静态全局变量