IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 深度学习的半精度浮点数的运用 -> 正文阅读

[人工智能]深度学习的半精度浮点数的运用

????????深度学习除了大量数据之外,还可能存在内存容量和总线带宽等瓶颈,其中内存容量,需要考虑将大量的权重和偏置等等参数数据放在内存里面;总线带宽的瓶颈,主要考虑流经CPU(或GPU)总线的数据超过某个限制。对于这些瓶颈的考虑,我们应该尽可能减少流经网络的数据的位数。
????????目前的浮点数主要是32位和64位,提高位数也就是提高精度对于很多行业特别重要,但是在深度学习领域就显得不怎么重要了,因为从我们前面学习到的各种点积运算、填充扩大、池化缩减、甚至图片的旋转,增亮等等操作,实际上可以发现即便图片有一些“噪声”,对于输出的结果其实影响是非常小的,也就是说神经网络的健壮性就显得实数的精度没有很大的意义。
我们现在来使用16位的半精度浮点数(half float),看下这个效果有没有很大的变化,还是以MNIST数据集为例:

import numpy as np
import matplotlib.pyplot as plt
from deepconv import DeepConvNet
from dataset.mnist import load_mnist

#加载MNIST数据集
(x_train,t_train),(x_test,t_test)=load_mnist(flatten=False)
#深度学习CNN
network=DeepConvNet()
#加载生成的权重参数文件
network.load_params('DeepCNN_Params.pkl')
x_test=x_test[:10000]

print('64位浮点数的识别率{:.3%}'.format(network.accuracy(x_test,t_test)))

#转换成16位浮点数
x_test=x_test.astype(np.float16)
for param in network.params.values():
    param[...]=param.astype(np.float16)
    #print(param.shape)
print('16位浮点数的识别率{:.3%}'.format(network.accuracy(x_test,t_test)))

64位浮点数的识别率99.290%

16位浮点数的识别率99.290%

两者的识别精度是一样的,也证明了神经网络的健壮性,对于这种半精度浮点数会在以后大量使用,实际上,NVIDIA的Pascal框架的GPU已支持半精度浮点数的运算。

其中代码中出现了(...)三个点,这个是代表什么意思呢?
我们可以打印param来看下形状:

(16, 1, 3, 3)
(16,)
(16, 16, 3, 3)
(16,)
(32, 16, 3, 3)
(32,)
(32, 32, 3, 3)
(32,)
(64, 32, 3, 3)
(64,)
(64, 64, 3, 3)
(64,)
(1024, 50)
(50,)
(50, 10)
(10,)

有很多形状(多种维度的)

我的理解就是在指定的维度是泛指。直接看代码可能更容易理解

x=np.random.rand(3,4)
array([[ 0.01441032, ?0.75985405, ?0.5696051 , ?0.41236632],
? ? ? ?[ 0.01058361, ?0.76136913, ?0.94842466, ?0.97565503],
? ? ? ?[ 0.38687359, ?0.48324047, ?0.16415143, ?0.43345319]])

x[...,2]#在第二个维度的第三列
?array([ 0.5696051 , ?0.94842466, ?0.16415143])

当然param[...]直接使用param一样可以!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:59:55  更:2022-01-12 00:01:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:06:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码