快捷搜索:  汽车  科技

cnn卷积神经网络各层作用:人工智能-深度学习-21

cnn卷积神经网络各层作用:人工智能-深度学习-21[0 1 1 1]x= 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) pri

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

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(1)

cnn卷积神经网络各层作用:人工智能-深度学习-21(2)

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

其中:

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

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(3)

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 二维张量输入的神经元模型

cnn卷积神经网络各层作用:人工智能-深度学习-21(4)

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 二元输入展开成一维输入的代码示例

cnn卷积神经网络各层作用:人工智能-深度学习-21(5)

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 三维张量输入的神经元模型

cnn卷积神经网络各层作用:人工智能-深度学习-21(6)

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 二元输入展开成一维输入的代码示例

cnn卷积神经网络各层作用:人工智能-深度学习-21(7)

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(8)

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

4.2 神经元数学运算的本质

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(9)

cnn卷积神经网络各层作用:人工智能-深度学习-21(10)

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(11)

cnn卷积神经网络各层作用:人工智能-深度学习-21(12)

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

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(13)

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(14)

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

cnn卷积神经网络各层作用:人工智能-深度学习-21(15)

————————————————

感谢大家的支持和喜欢,小编会每天分享更多Python学习的干货知识给大家,所以大家别忘了关注小编哦。

cnn卷积神经网络各层作用:人工智能-深度学习-21(16)

版权声明:本文为CSDN博主「文火冰糖的硅基工坊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HiWangWenBing/article/details/120795317

猜您喜欢: