PyTorch是一个:

  • 机器学习框架,简单易学

  • 可以看做是支持GPU计算和自动微分计算的“Numpy”库

  • 支持100多种Tensor常规算子,包括:创建、索引、切片、转置、连接、随机数、形状改变,线性代数、数学计算

  • Tensor是一个有值有属性的多维数组对象,跟NumPy ndarray对象比,还支持自动微分(.requires_grad)和选择计算硬件(.device)

    Tensor是多维数组

  • PyTorch中的所有CPU上的Tensor除了CharTensor以外,都支持跟 NumPy ndarray类型相互转换

  • 从神经网络角度来看,PyTorch是一个自动微分(autograd)工具包

  • 使用PyTorch构架神经网络,用户只需要定义forward()方法,而backward()无需用户定义,PyTorch框架已经实现了,这就是所谓的自动微分。

  • 可训练的参数,包含在net.parameters()里面
    下面的Python源代码是用Numpy来实现一个简单的神经网络,并完成前向计算和反向传播。可以看出用Numpy来编写神经网络的不方便性:

  • 没有自动微分功能,需要手动编写微分计算程序

  • 没有支持常用的神经网络层的算子,需要动手编写

  • 需要手动实现额外的计算图和微分参数,numpy.ndarray类型没有把微分和计算图的参数封装起来

  • 没有支持GPU

  • torch.tensor = numpy.ndarray + 计算图参数 + 微分参数 + GPU支持

  • 若希望某个Tensor支持自动微分,则需要将其属性requires_grad设置为True.当神经网络层数多的时候,手动编写微分程序和反向传播程序,是非常令人抓狂的一件事情

import numpy as np

# N:batch size; D_in:输入层神经个数# H:隐藏层神经元个数; D_out:输出层神经元个数N, D_in, H, D_out = 64, 1000, 100, 10

# 创建随机的输入输出数据x = np.random.randn(N, D_in)y = np.random.randn(N, D_out)

# 用随机数初始化权重w1 = np.random.randn(D_in, H)w2 = np.random.randn(H, D_out)

learning_rate = 1e-6for t in range(500):    # 前向传播,计算预测值y_pred    h = x.dot(w1)    h_relu = np.maximum(h, 0)    y_pred = h_relu.dot(w2)

    # 计算Loss值    loss = np.square(y - y_pred).sum()    print(t, loss)

    # 反向传播,计算w1和w2 对 loss函数的梯度    grad_y_pred = 2.0 * (y_pred - y)    grad_w2 = h_relu.T.dot(grad_y_pred)    grad_h_relu = grad_y_pred.dot(w2.T)    grad_h = grad_h_relu.copy()    grad_h[h < 0] = 0    grad_w1 = x.T.dot(grad_h)

    # 更新权重    w1 -= learning_rate * grad_w1    w2 -= learning_rate * grad_w2

pytorch relu函数实现_什么是pytorch?相关推荐

  1. pytorch神经网络因素预测_神经网络与PyTorch实战

    神经网络与PyTorch实战 作者:肖智清 著 出版日期:2018年08月 文件大小:22.81M 支持设备: ¥40.00在线试读 适用客户端: 言商书局 iPad/iPhone客户端:下载 And ...

  2. pytorch 加载模型_福利,PyTorch中文版官方教程来啦(附下载)

    PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...

  3. 旧版中 pytorch.rfft 函数与新版 pytorch.fft.rfft 函数对应修改问题

    旧版中 pytorch.rfft 函数与新版 pytorch.fft.rfft 函数对应修改问题 前言 一.旧版 pytorch.rfft()函数解释 二.新版pytorch.fft.rfft()函数 ...

  4. Pytorch的RELU函数

    4.1.2 激活函数 PyTorch实现了常见的激活函数,其具体的接口信息可参见官方文档1,这些激活函数可作为独立的layer使用.这里将介绍最常用的激活函数ReLU,其数学表达式为: 代码: rel ...

  5. [Pytorch 常用函数] 激活函数Relu, Leaky Relu

    修正线性单元(Rectified linear unit,ReLU)是神经网络中最常用的激活函数.它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为 ...

  6. pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构

    [机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...

  7. pytorch flatten函数_1. PyTorch中的基本数据类型——张量

    在PyTorch中,张量属于一种基本的数据类型,和Numpy库中的ndarry类似,无论是标量.向量.矩阵还是高维数组都是以张量(Tensor)这种数据类型来表示.因此,有必要对该基本数据类型有所了解 ...

  8. Pytorch ——基础指北_肆 [构建数据集与操作数据集]

    Pytorch --基础指北_肆 系列文章目录 Pytorch --基础指北_零 Pytorch --基础指北_壹 Pytorch --基础指北_贰 Pytorch --基础指北_叁 文章目录 Pyt ...

  9. Pytorch ——基础指北_叁 [Pytorch API 构建基础模型]

    Pytorch --基础指北_叁 系列文章目录 Pytorch --基础指北_零 Pytorch --基础指北_壹 Pytorch --基础指北_贰 Pytorch --基础指北_叁 文章目录 Pyt ...

最新文章

  1. 取得Repeater内部控件命令名与命令参数
  2. 信噪比与错误指数matlab,关于信噪比不符合理论值的问题
  3. 《2019人工智能发展报告》出炉:清华大学-中国工程院知识智能联合研究中心、中国人工智能学会联名发布!...
  4. 文件目录表(FDT)及其结构
  5. java beans 组件_如何利用JavaBeans在应用程序中创建组件?
  6. MySQL中的blob和clob
  7. BGP边界网关协议线路优势
  8. html元素和属性,HTML常用元素和属性(一)
  9. 第三:Pytest框架之命令行参数(一)
  10. Python函数的静态变量
  11. android蓝牙在有效范围内自动连接,android – 如何在范围内找到可用的蓝牙设备?...
  12. (三)canvas绘制样式
  13. Jquery之append()和html()的区别
  14. Spring IOC源码分析
  15. 篮球赛日程表_横县校椅青桐2019春节篮球赛火热开赛!快收好赛程表!
  16. 用树莓派搭建全功能NAS服务器(01):树莓派基础操作OMV搭建
  17. python 找零问题 动态规划
  18. 恐怖呀,恐怖....
  19. MacOS DNS快速设置
  20. 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例

热门文章

  1. 加密数据的检索_透明地持久保存并从数据库中检索加密的数据
  2. 在JDK 10中不可变与不可修改
  3. 最受欢迎的java技术_最受欢迎的Java环境
  4. 使用Spring Cloud Stream与RabbitMQ集成
  5. Gradle技巧–显示buildscript依赖项
  6. eclipselink_EclipseLink MOXy作为JAXB提供者
  7. jBPM和Drools工作台中的用户和组管理
  8. javafx 使用_使用JavaFX AnimationTimer
  9. 在Graphite中存储Hystrix的几个月历史指标
  10. Java EE 8发生了什么? (第2部分)