当前位置: 首页 > news >正文

【TORCH】绘制权重分布直方图,权重torch.fmod对torch.normal生成的随机数进行取模运算

要绘制上述代码中权重初始化的分布,可以分别展示每一层初始化权重的直方图。我们将用 torch.fmodtorch.normal 生成的随机数进行取模运算,确保权重值在 -2 到 2 之间。

含义解释

  • torch.normal(0, init_sd, size=...):生成服从均值为 0、标准差为 init_sd 的正态分布的张量。
  • torch.fmod(tensor, 2):对张量 tensor 中的每个元素取模 2 操作,结果在 [-2, 2) 范围内。

绘制分布的代码

以下代码生成初始化权重并绘制其直方图:

在这里插入图片描述

import torch
import matplotlib.pyplot as plt# 参数
x_dim = 100  # 示例输入维度
width = 50   # 隐藏层宽度
n_double = 10  # 示例额外维度
init_sd_first = 0.1
init_sd_middle = 0.5
init_sd_last = 1.0# 初始化权重
initial_weights = [torch.fmod(torch.normal(0, init_sd_first, size=(x_dim, width + n_double)), 2),torch.fmod(torch.normal(0, init_sd_middle, size=(width, width + n_double)), 2),torch.fmod(torch.normal(0, init_sd_middle, size=(width, width + n_double)), 2),torch.fmod(torch.normal(0, init_sd_last, size=(width, 1)), 2)
]# 绘制直方图
plt.figure(figsize=(20, 5))titles = ["Initial Weights Layer 1", "Initial Weights Layer 2", "Initial Weights Layer 3", "Initial Weights Layer 4"]
for i, weights in enumerate(initial_weights):plt.subplot(1, 4, i + 1)plt.hist(weights.numpy().flatten(), bins=30, color='blue', alpha=0.7)plt.title(titles[i])plt.xlabel('Weight Value')plt.ylabel('Frequency')plt.tight_layout()
plt.show()

说明

  1. 参数设置x_dimwidthn_double 分别代表输入维度、隐藏层宽度和额外维度。

  2. 初始化权重

    • 第一层权重初始化:均值为 0,标准差为 init_sd_first,尺寸为 (x_dim, width + n_double)
    • 第二层和第三层权重初始化:均值为 0,标准差为 init_sd_middle,尺寸为 (width, width + n_double)
    • 第四层权重初始化:均值为 0,标准差为 init_sd_last,尺寸为 (width, 1)
    • 使用 torch.fmod 对初始化权重取模 2,使得权重在 [-2, 2) 范围内。
  3. 绘制直方图:每个子图展示了不同层初始化权重的分布情况。

通过这些图形,可以直观地看到不同标准差和不同层的权重分布情况。这有助于理解权重初始化对神经网络的影响。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Codeforces Round 954 (Div. 3)
  • 软件设计之Java入门视频(12)
  • 玩转springboot之springboot使用外置tomcat进行运行
  • 缓存-缓存的使用与基本详解
  • Vue3从入门到精通(三)
  • Python实现Mybatis Plus
  • 常见反爬及应对
  • C# Socket
  • 多个tomcat同时使用 不设置CATALINA_HOME环境变量
  • Oracle 11.2.0.1升级到11.2.0.4并做rman备份异机恢复
  • 如何用Java写一个整理Java方法调用关系网络的程序
  • 银河麒麟V10 SP1 审计工具 auditd更新
  • 在linux系统centos上面安装php7gmp扩展
  • 【算法专题】双指针算法
  • rider使用libman
  • DataBase in Android
  • JavaScript设计模式系列一:工厂模式
  • JS专题之继承
  • Laravel Telescope:优雅的应用调试工具
  • markdown编辑器简评
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • uva 10370 Above Average
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 初识 webpack
  • 飞驰在Mesos的涡轮引擎上
  • 利用jquery编写加法运算验证码
  • 聊聊flink的BlobWriter
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 什么是Javascript函数节流?
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 我从编程教室毕业
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • Spring第一个helloWorld
  • ​业务双活的数据切换思路设计(下)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (1)(1.9) MSP (version 4.2)
  • (C#)获取字符编码的类
  • (C++17) std算法之执行策略 execution
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (二)fiber的基本认识
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (转)3D模板阴影原理
  • **PHP二维数组遍历时同时赋值
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net Remoting常用部署结构
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net与java建立WebService再互相调用
  • [ linux ] linux 命令英文全称及解释