[人工智能-深度学习-21]:卷积神经网络cnn--多维输入的神经元模型及其本质:一维矩阵的点乘(代码片段)

文火冰糖的硅基工坊 文火冰糖的硅基工坊     2023-01-14     675

关键词:

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120795317


目录

第1章 神经元的一维输入模型

1.1 一维线性输入的原始神经元模型

1.2 一维输入时神经元的张量运算模型

 1.3 一维输入时神经元的代码示例

1.4 一维输入神经元的内积运算

第2章 神经元的二维输入模型

2.1 二维张量输入的神经元模型

2.2 二维输入时神经元的代码示例

2.3 二元输入展开成一维输入的代码示例

2.4 一维输入神经元的内积运算

第3章 神经元的三维输入模型

3.1  三维张量输入的神经元模型

3.2 二维输入时神经元的代码示例

3.3 二元输入展开成一维输入的代码示例

2.4 一维输入神经元的内积运算

第4章 神经元的本质

4.1 综合综述

4.2 神经元数学运算的本质



第1章 神经元的一维输入模型

1.1 一维线性输入的原始神经元模型

[人工智能-深度学习-6]:神经网络基础 - 人工神经元数学模型、激活函数_文火冰糖(王文兵)的博客-CSDN博客第1章 人的神经系统1.1人体神经系统/神经网络的功能神经系统(nervoussystem)是机体内起主导作用的系统。(1)神经系统调节和控制人体各其他系统的复杂活动,使机体成为一个完整的统一有机体。例如,当参加体育运动时,随着骨骼肌的收缩,出现呼吸加快加深、心跳加速、出汗等一系列变化。(2)神经系统通过调整机体功能活动,使机体适应不断的外界环境,维持机体与外界环境的平衡。如气温低时,通过神经系统的调节,使周围小血管收缩,减少体内热量散发;气温高时,周围小血管扩张,增加...https://blog.csdn.net/HiWangWenBing/article/details/120169493?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163405246716780265445855%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163405246716780265445855&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-1-120169493.pc_v2_rank_blog_default&utm_term=%E7%A5%9E%E7%BB%8F%E5%85%83&spm=1018.2226.3001.4450

 

 就得到了最简化的模型 =》 W * X = Y

其中:

  • X:为n+1长度的列矩阵
  • W:为n+1长度的行矩阵
  • Y:为0维的数值标量

1.2 一维输入时神经元的张量运算模型

 1.3 一维输入时神经元的代码示例

print("定义一维格式的输入数据")
x1 = np.array([0,1,1,1])
print("x.shape=",x1.shape)
print("x=\\n",x1)
print("")

print("定义一维格式的神经元参数")
w1 = np.array([1,0,0,1])
print("w.shape=",w1.shape)
print("w=\\n",w1)
print("")

print("W * X的线性运算")
z = w1 * x1
print("z.shape=", z.shape)
print("z=\\n",z)
print("")

print("累加和的神经元输出")
y = np.sum(z)
print("y.shape=", y.shape)
print("y=",y)
定义一维格式的输入数据
x.shape= (4,)
x=
 [0 1 1 1]

定义一维格式的神经元参数
w.shape= (4,)
w=
 [1 0 0 1]

W * X的线性运算
z.shape= (4,)
z=
 [0 0 0 1]

累加和的神经元输出
y.shape= ()
y= 1

1.4 一维输入神经元的内积运算

x = x1
w = w1
print("x.shape=",x.shape)
print("x=\\n",x)
print("")

print("w.shape=",w.shape)
print("w=\\n",w)
print("")

print("w, w的dot运算")
y = np.dot(x, w)
print("y.shape=", y.shape)
print("y=",y)
print("")

print("x, w的matmul运算")
y = np.matmul(x, w)
print("y.shape=", y.shape)
print("y=",y)

print("")
print("x, w的matmul运算")
y = np.multiply(x, w)
print("y.shape=", y.shape)
print("y=",y)
x.shape= (4,)
x=
 [0 1 1 1]

w.shape= (4,)
w=
 [1 0 0 1]

w, w的dot运算
y.shape= ()
y= 1

x, w的matmul运算
y.shape= ()
y= 1

x, w的matmul运算
y.shape= (4,)
y= [0 0 0 1]

第2章 神经元的二维输入模型

2.1 二维张量输入的神经元模型

2.2 二维输入时神经元的代码示例

print("定义二维格式的输入数据")
print("把一维数据扩展成二维数据")
x2 = np.expand_dims(x1,0) 
print("把一维数据复制到新扩展的二维空间")
x2 = np.repeat(x2,len(x1),axis=0)
print("x.shape=",x2.shape)
print("x=\\n",x2)
print("")

print("定义二维格式的神经元参数")
print("把一维参数扩展成二维参数")
w2 = np.expand_dims(w1,0)
print("把一维参数复制到新扩展的二维空间")
w2 = np.repeat(w2, len(x1), axis=0)

print("w.shape=",w2.shape)
print("w=\\n",w2)
print("")

print("W * X的线性运算")
z = w2 * x2
print("z.shape=", z.shape)
print("z=\\n",z)
print("")

print("累加和的神经元输出")
y = np.sum(z)
print("y.shape=", y.shape)
print("y=",y)

输出:

定义二维格式的输入数据
把一维数据扩展成二维数据
把一维数据复制到新扩展的二维空间
x.shape= (4, 4)
x=
 [[0 1 1 1]
 [0 1 1 1]
 [0 1 1 1]
 [0 1 1 1]]

定义二维格式的神经元参数
把一维参数扩展成二维参数
把一维参数复制到新扩展的二维空间
w.shape= (4, 4)
w=
 [[1 0 0 1]
 [1 0 0 1]
 [1 0 0 1]
 [1 0 0 1]]

W * X的线性运算
z.shape= (4, 4)
z=
 [[0 0 0 1]
 [0 0 0 1]
 [0 0 0 1]
 [0 0 0 1]]

累加和的神经元输出
y.shape= ()
y= 4

2.3 二元输入展开成一维输入的代码示例

print("把二维展现成一维输入数据")
x = x2.reshape(-1)
print("x2.shape=",x.shape)
print("x2=\\n",x)
print("")

print("把二维展现成一维神经元参数")
w = w2.reshape(-1)
print("w.shape=",w.shape)
print("w=\\n",w)
print("")

print("W * X的线性运算")
z = w * x
print("z.shape=", z.shape)
print("z=\\n",z)
print("")

print("累加和的神经元输出")
y = np.sum(z)
print("y.shape=", y.shape)
print("y=",y)
把二维展现成一维输入数据
x2.shape= (16,)
x2=
 [0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1]

把二维展现成一维神经元参数
w.shape= (16,)
w=
 [1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1]

W * X的线性运算
z.shape= (16,)
z=
 [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1]

累加和的神经元输出
y.shape= ()
y= 4

2.4 一维输入神经元的内积运算

print("x.shape=",x.shape)
print("x=\\n",x)
print("")

print("w.shape=",w.shape)
print("w=\\n",w)
print("")

print("w, w的dot运算")
y = np.dot(x, w)
print("y.shape=", y.shape)
print("y=",y)
print("")

print("x, w的matmul运算")
y = np.matmul(x, w)
print("y.shape=", y.shape)
print("y=",y)

print("")
print("x, w的multiply运算(不是神经元的形态,仅仅作为比较)")
y = np.multiply(x, w)
print("y.shape=", y.shape)
print("y=",y)
x.shape= (16,)
x=
 [0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1]

w.shape= (16,)
w=
 [1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1]

w, w的dot运算
y.shape= ()
y= 4

x, w的matmul运算
y.shape= ()
y= 4

x, w的multiply运算(不是神经元的形态,仅仅作为比较)
y.shape= (16,)
y= [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1]

第3章 神经元的三维输入模型

3.1  三维张量输入的神经元模型

3.2 二维输入时神经元的代码示例

print("定义三维格式的输入数据")
print("把二维数据扩展成三维数据")
x3 = np.expand_dims(x2, 0)
print("把二维数据复制到新扩展的三维空间")
x3 = np.repeat(x3, 3, axis=0)
print("x.shape=",x3.shape)
print("x=\\n",x3)
print("")

print("定义三维格式的神经元参数")
print("把二维参数扩展成三维参数")
w3 = np.expand_dims(w2, 0)
print("把二维参数复制到新扩展的三维空间")
w3 = np.repeat(w3, 3,axis=0)
print("w.shape=",w3.shape)
print("w=\\n",w3)
print("")

print("W * X的线性运算")
z = w3 * x3
print("z.shape=", z.shape)
print("z=\\n",z)
print("")

print("累加和的神经元输出")
y = np.sum(z)
print("y.shape=", y.shape)
print("y=",y)

定义三维格式的输入数据
把二维数据扩展成三维数据
把二维数据复制到新扩展的三维空间
x.shape= (3, 4, 4)
x=
 [[[0 1 1 1]
  [0 1 1 1]
  [0 1 1 1]
  [0 1 1 1]]

 [[0 1 1 1]
  [0 1 1 1]
  [0 1 1 1]
  [0 1 1 1]]

 [[0 1 1 1]
  [0 1 1 1]
  [0 1 1 1]
  [0 1 1 1]]]

定义三维格式的神经元参数
把二维参数扩展成三维参数
把二维参数复制到新扩展的三维空间
w.shape= (3, 4, 4)
w=
 [[[1 0 0 1]
  [1 0 0 1]
  [1 0 0 1]
  [1 0 0 1]]

 [[1 0 0 1]
  [1 0 0 1]
  [1 0 0 1]
  [1 0 0 1]]

 [[1 0 0 1]
  [1 0 0 1]
  [1 0 0 1]
  [1 0 0 1]]]

W * X的线性运算
z.shape= (3, 4, 4)
z=
 [[[0 0 0 1]
  [0 0 0 1]
  [0 0 0 1]
  [0 0 0 1]]

 [[0 0 0 1]
  [0 0 0 1]
  [0 0 0 1]
  [0 0 0 1]]

 [[0 0 0 1]
  [0 0 0 1]
  [0 0 0 1]
  [0 0 0 1]]]

累加和的神经元输出
y.shape= ()
y= 12

3.3 二元输入展开成一维输入的代码示例

print("把二维展现成一维输入数据")
x = x3.reshape(-1)
print("x.shape=",x.shape)
print("x=\\n",x)
print("")

print("把二维展现成一维神经元参数")
w = w3.reshape(-1)
print("w.shape=",w.shape)
print("w=\\n",w)
print("")

print("W * X的线性运算")
z = w * x
print("z.shape=", z.shape)
print("z=\\n",z)
print("")

print("累加和的神经元输出")
y = np.sum(z)
print("y.shape=", y.shape)
print("y=",y)
把二维展现成一维输入数据
x.shape= (48,)
x=
 [0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0
 1 1 1 0 1 1 1 0 1 1 1]

把二维展现成一维神经元参数
w.shape= (48,)
w=
 [1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
 0 0 1 1 0 0 1 1 0 0 1]

W * X的线性运算
z.shape= (48,)
z=
 [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0
 0 0 1 0 0 0 1 0 0 0 1]

累加和的神经元输出
y.shape= ()
y= 12

2.4 一维输入神经元的内积运算

print("x.shape=",x.shape)
print("x=\\n",x)
print("")

print("w.shape=",w.shape)
print("w=\\n",w)
print("")

print("w, w的dot运算")
y = np.dot(x, w)
print("y.shape=", y.shape)
print("y=",y)
print("")

print("x, w的matmul运算")
y = np.matmul(x, w)
print("y.shape=", y.shape)
print("y=",y)

print("")
print("x, w的matmul运算")
y = np.multiply(x, w)
print("y.shape=", y.shape)
print("y=",y)
x.shape= (48,)
x=
 [0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0
 1 1 1 0 1 1 1 0 1 1 1]

w.shape= (48,)
w=
 [1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
 0 0 1 1 0 0 1 1 0 0 1]

w, w的dot运算
y.shape= ()
y= 12

x, w的matmul运算
y.shape= ()
y= 12

x, w的matmul运算
y.shape= (48,)
y= [0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0
 0 0 1 0 0 0 1 0 0 0 1]

第4章 神经元的本质

4.1 综合综述

(1)W*X之间的乘法是算术乘,即按位相乘!!!

(2)相乘后的累加和为神经元的输出

(3)展开前后的运算不变,指示输入形式的改变。

(4)展开前后的结果不变。

(5)为了支持多个神经元构成的神经网络运算,无论神经元的输入形式是什么(一维、二维图片、三维图片),通常会展开成一维形式。

(6)无论输入形式如何变化,无论W,B的矩阵如何变化,输出只有一路,即为所有Wi * Xi的累加和!!!!!

4.2 神经元数学运算的本质

(1)多维输入形式是的本质:算术乘+累加和

 

(2)转换成一维输入形式后的本质:一维矩阵的点乘(内积)

备注:在后续的讨论中,无论神经元的输入形式如何,都会转换成一维输入模型。

(3)多样本输入并发运算的模型

(4)单样本,多个神经元输出并发运算的模型

(4)多样本,多个神经元输出并发运算的模型


 作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120795317

[人工智能-深度学习-28]:卷积神经网络cnn-网络架构与描述方法

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120806599目录第1章卷积神经网络总体概述1.1 什么是卷积神经网络1.2卷积... 查看详情

[人工智能-深度学习-32]:卷积神经网络cnn-常见分类网络-alexnet

...1.2卷积神经网络的核心要素1.3卷积神经网络的描述方法1.4人工智能 查看详情

[人工智能-深度学习-25]:卷积神经网络cnn-cs231n解读-卷积层详解

...xff09;的博客_文火冰糖的硅基工坊_CSDN博客本文网址:[人工智能-深度学习-25]:卷积神经网络CNN-CS231n解读-卷积层详解_文火冰糖(王文兵)的博客-CSDN博客目录第1章卷积神经网络概述第2章卷积核的局部连接性:... 查看详情

[人工智能-深度学习-26]:卷积神经网络cnn-为啥要卷积神经网络以及卷积神经网络的应用

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120805258目录第1章 全连接网络的缺点第2章卷积神经网络的时思想起源第... 查看详情

[人工智能-深度学习-31]:卷积神经网络cnn-常见卷积神经网络综合比较大全

...;https://blog.csdn.net/HiWangWenBing/article/details/120835303目录第1章人工智能发展的3次浪潮1.1 人工智能的发展报告2011-20201.2来自其他途径第2章神经网络的演进历史2. 查看详情

[人工智能-深度学习-24]:卷积神经网络cnn-cs231n解读-卷积神经网络基本层级

...xff09;的博客_文火冰糖的硅基工坊_CSDN博客本文网址:[人工智能-深度学习-23]:卷积神经网络CNN-CS231n解读-卷积神经网络基本层级_文火冰糖(王文兵)的博客-CSDN博客 目录第1章CS321n卷积神经网络简介1.1 CS321n的简介... 查看详情

[人工智能-深度学习-27]:卷积神经网络cnn-核心概念(卷积滑动填充参数共享通道)

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120806277目录第1章卷积中的“积”的定义1.1卷积中的“积”是内积第2章... 查看详情

[人工智能-深度学习-22]:卷积神经网络cnn--单层神经网络的本质是矩阵相乘

...xff09;的博客_文火冰糖的硅基工坊_CSDN博客本文网址:[人工智能-深度学习-22]:卷积神经网络CNN--单层神经网络的本质是矩阵相乘_文火冰糖(王文兵)的博客-CSDN博客目录第1章单个神经的本质是一维矩阵(向量&#... 查看详情

[人工智能-深度学习-20]:卷积神经网络cnn-全连接网络的缺点与cnn的使命

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120732872目录第1章全连接神经网络的缺点1.1什么是全连接网络1.2全连接网... 查看详情

[人工智能-深度学习-35]:卷积神经网络cnn-常见分类网络-googlenetincepetion网络架构分析与详解

...1.2卷积神经网络的核心要素1.3卷积神经网络的描述方法1.4人工智能 查看详情

[人工智能-深度学习-38]:卷积神经网络cnn-常见分类网络-resnet网络架构分析与详解

...1.2卷积神经网络的核心要素1.3卷积神经网络的描述方法1.4人工智能 查看详情

[人工智能-深度学习-33]:卷积神经网络cnn-常见分类网络-lenet网络结构分析与详解

...1.2卷积神经网络的核心要素1.3卷积神经网络的描述方法1.4人工智能 查看详情

[人工智能-深度学习-23]:卷积神经网络cnn-卷积核的本质是多维输入的神经元

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120734529目录第1章预备核心概念1.1单个神经元的一维矩阵运算模型1.2神经... 查看详情

[人工智能-深度学习-29]:卷积神经网络cnn-全连接网络与卷积网络结构的互为等效与性能比较

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120808864目录第1章单个全连接神经元与卷积核神经元的结构比较1.1全连接... 查看详情

[人工智能-深度学习-34]:卷积神经网络cnn-常见分类网络-vgg16/vgg19网络结构分析与详解

...1.2卷积神经网络的核心要素1.3卷积神经网络的描述方法1.4人工智能 查看详情

[人工智能-深度学习-30]:卷积神经网络cnn-感受野,特征的提取与范围的扩散

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120833158目录第1章什么感受野1.1生物学对感受野的定义1.2卷积神经网络中... 查看详情

大话卷积神经网络(cnn)

...lNeuralNetworks,简称CNN)是推动这一切爆发的主力,在目前人工智能的发展中有着非常重要的地位。【问题 查看详情

[人工智能-深度学习-47]:卷积神经网cnn+循环神经网络rnn与组合电路+时序电路的比较

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121367263目录第1章计算机数字电路的基本单元1.1计算机数字电路1.2组合电... 查看详情