1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > [人工智能-深度学习-21]:卷积神经网络CNN -- 多维输入的神经元模型及其本质:一维

[人工智能-深度学习-21]:卷积神经网络CNN -- 多维输入的神经元模型及其本质:一维

时间:2022-02-22 23:27:09

相关推荐

[人工智能-深度学习-21]:卷积神经网络CNN -- 多维输入的神经元模型及其本质:一维

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

本文网址:/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)神经系统通过调整机体功能活动,使机体适应不断的外界环境,维持机体与外界环境的平衡。如气温低时,通过神经系统的调节,使周围小血管收缩,减少体内热量散发;气温高时,周围小血管扩张,增加.../HiWangWenBing/article/details/19493?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163405246716780265445855%2522%252C%2522scm%2522%253A%25220713.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-19493.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 * x1print("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 = x1w = w1print("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= 1x, w的matmul运算y.shape= ()y= 1x, 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 * x2print("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 * xprint("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= 4x, w的matmul运算y.shape= ()y= 4x, 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 * x3print("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 * xprint("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 01 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 10 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 00 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 01 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 10 0 1 1 0 0 1 1 0 0 1]w, w的dot运算y.shape= ()y= 12x, w的matmul运算y.shape= ()y= 12x, 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 00 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博客

本文网址:/HiWangWenBing/article/details/120795317

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。