卷积层python代码
时间: 2023-10-13 07:56:57 浏览: 107
卷积python代码
5星 · 资源好评率100%
以下是卷积层的Python代码:
```python
import numpy as np
# 加载卷积层的输入数据
relu1_data = np.load('./data_pic/data_3_relu1\[10-32-14-14\].npy')
print("卷积层的输入的shape是:\n" + str(relu1_data.shape))
# 边缘填充
pad = 1
in_data_pad = np.pad(relu1_data, ((0,), (0,), (pad,), (pad,)), mode='constant', constant_values=0)
print("\n卷积层的输入边缘填充之后的shape是:\n" + str(in_data_pad.shape))
print("\n卷积层的输入边缘填充之后的第一个batch的第一个channel的前三行是:\n" + str(in_data_pad\[0\]\[0\]\[0:3\]\[0:3\]))
# 卷积
in_data_pad_masked = in_data_pad\[:, :, 0:3, 0:3\]
print("卷积层输入数据的32个channel的map的3X3的小块:")
print(in_data_pad_masked.shape)
print("\n卷积层输入数据的第一个batch的第一个channel的map的3X3的小块:")
print(in_data_pad_masked\[0\]\[0\])
conv2_w = np.random.randn(16, 32, 3, 3) # w初值设置,随机产生标准正太分布范围内的数
print("\n第一个输入数据对应第一个输出数据的卷积核,类似于全连接中的W11:")
print(conv2_w\[0\]\[0\])
conv2_b = np.random.randn(16)
conv2_out = np.zeros((10, 16, 14, 14))
conv2_out\[:, 0, 0, 0\] = np.sum(in_data_pad_masked * conv2_w\[0, :, :, :\], axis=(1, 2, 3)) # + conv2_b\[0\]
print("\n卷积层输出数据的第一个batch的第一个channel的map的3X3的小块")
print(conv2_out\[0\]\[0\]\[0:3\])
```
这段代码首先加载了卷积层的输入数据,并进行了边缘填充。然后进行了卷积操作,计算了卷积层的输出数据。其中,`conv2_w`是卷积核的权重,`conv2_b`是偏置项,`conv2_out`是卷积层的输出数据。
#### 引用[.reference_title]
- *1* *2* *3* [【Python实现卷积神经网络】:卷积层的正向传播与反向传播+python实现代码](https://blog.csdn.net/weixin_37251044/article/details/81349287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文