热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度学习(20)神经网络与全连接层三:全连接层

深度学习(20)神经网络与全连接层三:全连接层1.单层2.三层3.多层4.HerecomesDeepLearning!5.WhyDeepLearning


深度学习(20)神经网络与全连接层三: 全连接层

  • 1. 单层
  • 2. 三层
  • 3. 多层
  • 4. Here comes Deep Learning!
  • 5. Why Deep Learning?
  • 6. Heroes
  • 7. Fully connected layer(全连接层)
  • 8. net.build()
  • 9. 网络中的维度设置出错会导致报错
  • 10. Multi-Layers——keras.Sequential()
  • 11. 全连接层实战
  • 12. Next

Outline


  • Matmul
  • Neural Network
  • Deep Learning
  • Multi-Layer

Recap


  • out=f(X@W+b)out=f(X@W+b)out=f(X@W+b)
    →\to
  • out=relu(X@W+b)out=relu(X@W+b)out=relu(X@W+b)

1. 单层


  • X@W+bX@W+bX@W+b
    • h=relu(X@W+b)h=relu(X@W+b)h=relu(X@W+b)
    • [h00h10h01h11]=relu([x00x10x20x10x11x12]@[w00w01w10w11w20w21]+[b0b1])\begin{bmatrix}h_0^0&h_1^0\\h_0^1&h_1^1\end{bmatrix}=relu(\begin{bmatrix}x_0^0&x_1^0&x_2^0\\x_1^0&x_1^1&x_1^2\end{bmatrix}@\begin{bmatrix}w_{00}&w_{01}\\w_{10}&w_{11}\\w_{20}&w_{21}\end{bmatrix}+\begin{bmatrix}b_0&b_1\end{bmatrix})[h00h01h10h11]=relu([x00x10x10x11x20x12]@w00w10w20w01w11w21+[b0b1])
      在这里插入图片描述

2. 三层


  • h0=relu(X@W1+b1)h_0=relu(X@W_1+b_1)h0=relu(X@W1+b1)
  • h1=relu(h0@W2+b2)h_1=relu(h_0@W_2+b_2)h1=relu(h0@W2+b2)
  • out=relu(h1@W3+b3)out=relu(h_1@W_3+b_3)out=relu(h1@W3+b3)
    在这里插入图片描述

3. 多层


  • Input
  • Hidden
  • Output
    在这里插入图片描述

4. Here comes Deep Learning!

(1) Neural Network in the 1980s


  • 3∼5layers3\sim5\ layers35 layers
    在这里插入图片描述

(2) Deep Learning now


  • n≈1200layersn≈1200\ layersn1200 layers
    在这里插入图片描述

5. Why Deep Learning?


    • 486 PC with DSP32C
      • 20Mflops, 4MB RAM
        在这里插入图片描述
    • Telsa V100
      • 32GB HBM2, 100Tflops
        在这里插入图片描述

6. Heroes


  • BigDATA
  • ReLU
  • Dropout
  • BatchNorm
  • ResNet
  • Xavier Initialization
  • Caffe/TensorFlow/PyTorch

  • 在这里插入图片描述

7. Fully connected layer(全连接层)

在这里插入图片描述
在这里插入图片描述

(1) x = tf.random.normal([4, 784]): 创建一个维度为[4, 784]的Tensor;
(2) net = tf.keras.layers.Dense(512): 创建一层神经网络,其输出维度为512;
(3) tf.keras.layers.Dense()在运行时会自动根据输入的shape来生成权值,即w和b;
(4) out.shape: 输出out的维度为[4, 512];
(5) net.kernal.shape: 为自动生成的权值w,其shape为[784, 512];
(6) net.bias.shape: 为自动生成的权值(偏置项)b,其shape为[512];


8. net.build()

在这里插入图片描述
(1) net.build(input_shape=(None, 4)): 可以通过调用net.build()函数创建权重wwwbbb,其中4为下一层的维度;
(2) net.build(input_shape=(None, 20)): 这里可以看出可以通过多次调用net.build()函数来计算权重wwwbbb的值;
注: 在第一次创建神经网络的时候,没有wwwbbb,这时系统就会自动调用net.build()函数来创建权重wwwbbb;


9. 网络中的维度设置出错会导致报错

在这里插入图片描述

(1) 如上图所示,net.build(input_shape=(None, 20))表示建立的网络的维度为20; out=net(tf.random.randn((4, 12)))表示输入到这层神经网络中的数据的维度是12; 那么计算时就会报错;
(2) out=net(tf.random.randn((4, 20))): 将输入到这层神经网络中的数据的维度改为20,最终out.shape=[4, 10];


10. Multi-Layers——keras.Sequential()

多层神经网络,只需要调用容器——keras.Sequential()即可。


    • keras.Sequential([layer1, layer2, layer3])
      在这里插入图片描述
    • Sequential
      在这里插入图片描述

(1) x = random.normal([2, 3]): 创建一个维度为[2, 3]的Tensor;
(2) model = keras.Sequential([keras.layers.Dense(2, activation=‘relu’), keras.layers.Dense(2, activation=‘relu’), keras.layers.Dense(2)]): 共设置3层全连接层:
[3]→[2]→[2]→[2][3]→[2]→[2]→[2][3][2][2][2]
(3) model.build(input_shape=[None, 3]): 给定一个维度为3的输入;
(4) model.summary(): 相当于print(model),方便查看网络结构的函数;
(5) for p in model.trainable_variables: 所有权重参数都被称为“可训练的变量”,即trainable_variables,在这个网络结构中,就是[w1,b1,w2,b2,w3,b3][w_1,b_1,w_2,b_2,w_3,b_3][w1,b1,w2,b2,w3,b3];
(6) print(p.name, p.shape): 打印这些参数的名字和其维度;


11. 全连接层实战

import tensorflow as tf
from tensorflow import kerasx = tf.random.normal([2, 3])model = keras.Sequential([keras.layers.Dense(2, activation='relu'),keras.layers.Dense(2, activation='relu'),keras.layers.Dense(2)
])
model.build(input_shape=[None, 4])
model.summary()for p in model.trainable_variables:print(p.name, p.shape)

运行结果如下:
在这里插入图片描述

(1) Param为参数量,第一层有2×3+2=82×3+2=82×3+2=8个; 第二层有2×2+2=62×2+2=62×2+2=6个; 第三层有2×2+2=62×2+2=62×2+2=6个;
(2) dense_n/kernel: 第n层的www的值;
dense_n/bias: 第n层的bbb的值;


12. Next


  • 神经网络层与训练方法
  • 图片识别
  • 文本理解
  • 艺术创作
  • 自动决策

  • 在这里插入图片描述

参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》
[2] https://www.youtube.com/watch?v=FwFduRA_L6Q
[3] https://capacitybc.com/mini-series-part-3-the-hero1
[4] https://www.facebook.com/deepdreamgenerator/photos/a.892441237472223/1449674838415524/?type=1&theater
[5] https://study.163.com/provider/480000001847407/index.htm?share=2&shareld=480000001847407


推荐阅读
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • [翻译]PyCairo指南裁剪和masking
    裁剪和masking在PyCairo指南的这个部分,我么将讨论裁剪和masking操作。裁剪裁剪就是将图形的绘制限定在一定的区域内。这样做有一些效率的因素࿰ ... [详细]
  • 语义分割系列3SegNet(pytorch实现)
    SegNet手稿最早是在2015年12月投出,和FCN属于同时期作品。稍晚于FCN,既然属于后来者,又是与FCN同属于语义分割网络 ... [详细]
  • pytorch Dropout过拟合的操作
    这篇文章主要介绍了pytorchDropout过拟合的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完 ... [详细]
  • 都会|可能会_###haohaohao###图神经网络之神器——PyTorch Geometric 上手 & 实战
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了###haohaohao###图神经网络之神器——PyTorchGeometric上手&实战相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
author-avatar
mobiledu2502936307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有