下面是如何自己构建一个层,分为包含自动反向求导和手动反向求导两种方式,后面会分别构建网络,对比一下结果对不对。

----------------------------------------------------------

关于Pytorch中的结构层级关系。

最为底层的是torch.relu()、torch.tanh()、torch.ge()这些函数,这些函数个人猜测就是直接用Cuda写成的,并且封装成了python接口给python上层调用。

部分函数被torch.nn.functional里面的部分函数模块调用。这些函数可能会被更为上层的nn.Module调用。

下面以BatchNormalization为例进行分析。

最为底层的是torch.batch_norm()这个函数,是看不到源代码的,应该是对于cuda代码的封装。这个函数会传入(input, weight, bias, running_mean, running_var, training, momentum, eps)。 再往上时torch.nn.functional里面的函数bacth_norm()。再往上就是torch.nn里面的网络层,比如,BatchNorm2d()等等。

分析一下BatchNorm2d()里面的主要程序。

import torch
import torch.nn as nn
from torch.nn import init
from torch.nn.parameter import Parameter class BatchNorm(nn.module):
def __init__(self,num_features):
super(BatchMMNorm,self).__init__()
self.weight = Parameter(torch.Tensor(num_features))
self.bias = Parameter(torch.Tensor(num_features)) def reset_parameter(self):
init.uniform_(self.weight)
init.zeros_(self.bias)   def forward(self,input):

其中Parameter是用以定义可学习的权重参数的,后面还需要初始化参数。

最新文章

  1. applicationContext.xml
  2. css3多列样式
  3. spring mvc mybatis 搭建 配置文件信息
  4. 保留json字符串中文的函数,代替json_encode
  5. 安装win7 ubuntu双系统
  6. java导出excel表格
  7. string tips
  8. MongoDB安装,启动,注册为windows系统服务
  9. MS-SQL索引类型
  10. 你的Java代码对JIT编译友好么?(转)
  11. js操作select和option
  12. WIN7 嵌入式系统安装教程 Windows Embedded Standard 2011 安装
  13. Linux中安装C++编译器codeBlock,并配置opencv链接库
  14. Vue + webpack 项目实践
  15. 【ES】match_phrase与regexp
  16. canvas将图片转成base64格式 以及 验证图片是否透明
  17. Beta阶段冲刺2.0
  18. 数字的可视化:python画图之散点图sactter函数详解
  19. 帧动画布局文件 animation-list
  20. Daily Scrumming* 2015.10.29(Day 10)

热门文章

  1. Flask学习【第10篇】:自定义Form组件
  2. nginx 配置静态文件
  3. synchronized 关键字如何使用
  4. LightOJ 1268 Unlucky Strings(KMP+矩阵乘法+基础DP)
  5. 【Hadoop 分布式部署 五:分布式部署之分发、基本测试及监控】
  6. Bytomd 助记词恢复密钥体验指南
  7. 【Python】【Web开发】
  8. 前端性能优化之按需加载(React-router+webpack)
  9. spring boot 当参数传入开头多个0时,报错:JSON parse error: Invalid numeric value: Leading zeroes not allowed
  10. mysql利用navicat导出表结构和表中数据