pytorch relu函数实现_什么是pytorch?
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?相关推荐
- pytorch神经网络因素预测_神经网络与PyTorch实战
神经网络与PyTorch实战 作者:肖智清 著 出版日期:2018年08月 文件大小:22.81M 支持设备: ¥40.00在线试读 适用客户端: 言商书局 iPad/iPhone客户端:下载 And ...
- pytorch 加载模型_福利,PyTorch中文版官方教程来啦(附下载)
PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...
- 旧版中 pytorch.rfft 函数与新版 pytorch.fft.rfft 函数对应修改问题
旧版中 pytorch.rfft 函数与新版 pytorch.fft.rfft 函数对应修改问题 前言 一.旧版 pytorch.rfft()函数解释 二.新版pytorch.fft.rfft()函数 ...
- Pytorch的RELU函数
4.1.2 激活函数 PyTorch实现了常见的激活函数,其具体的接口信息可参见官方文档1,这些激活函数可作为独立的layer使用.这里将介绍最常用的激活函数ReLU,其数学表达式为: 代码: rel ...
- [Pytorch 常用函数] 激活函数Relu, Leaky Relu
修正线性单元(Rectified linear unit,ReLU)是神经网络中最常用的激活函数.它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为 ...
- pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构
[机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...
- pytorch flatten函数_1. PyTorch中的基本数据类型——张量
在PyTorch中,张量属于一种基本的数据类型,和Numpy库中的ndarry类似,无论是标量.向量.矩阵还是高维数组都是以张量(Tensor)这种数据类型来表示.因此,有必要对该基本数据类型有所了解 ...
- Pytorch ——基础指北_肆 [构建数据集与操作数据集]
Pytorch --基础指北_肆 系列文章目录 Pytorch --基础指北_零 Pytorch --基础指北_壹 Pytorch --基础指北_贰 Pytorch --基础指北_叁 文章目录 Pyt ...
- Pytorch ——基础指北_叁 [Pytorch API 构建基础模型]
Pytorch --基础指北_叁 系列文章目录 Pytorch --基础指北_零 Pytorch --基础指北_壹 Pytorch --基础指北_贰 Pytorch --基础指北_叁 文章目录 Pyt ...
最新文章
- 取得Repeater内部控件命令名与命令参数
- 信噪比与错误指数matlab,关于信噪比不符合理论值的问题
- 《2019人工智能发展报告》出炉:清华大学-中国工程院知识智能联合研究中心、中国人工智能学会联名发布!...
- 文件目录表(FDT)及其结构
- java beans 组件_如何利用JavaBeans在应用程序中创建组件?
- MySQL中的blob和clob
- BGP边界网关协议线路优势
- html元素和属性,HTML常用元素和属性(一)
- 第三:Pytest框架之命令行参数(一)
- Python函数的静态变量
- android蓝牙在有效范围内自动连接,android – 如何在范围内找到可用的蓝牙设备?...
- (三)canvas绘制样式
- Jquery之append()和html()的区别
- Spring IOC源码分析
- 篮球赛日程表_横县校椅青桐2019春节篮球赛火热开赛!快收好赛程表!
- 用树莓派搭建全功能NAS服务器(01):树莓派基础操作OMV搭建
- python 找零问题 动态规划
- 恐怖呀,恐怖....
- MacOS DNS快速设置
- 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
热门文章
- 加密数据的检索_透明地持久保存并从数据库中检索加密的数据
- 在JDK 10中不可变与不可修改
- 最受欢迎的java技术_最受欢迎的Java环境
- 使用Spring Cloud Stream与RabbitMQ集成
- Gradle技巧–显示buildscript依赖项
- eclipselink_EclipseLink MOXy作为JAXB提供者
- jBPM和Drools工作台中的用户和组管理
- javafx 使用_使用JavaFX AnimationTimer
- 在Graphite中存储Hystrix的几个月历史指标
- Java EE 8发生了什么? (第2部分)