已解决
pytorch复现_conv2d
来自网友在路上 174874提问 提问时间:2023-11-03 07:29:11阅读次数: 74
最佳答案 问答题库748位专家为你答疑解惑
import numpy as npdef conv2d(inputs, kernels, bias, stride, padding):"""正向卷积操作inputs: 输入数据,形状为 (C, H, W)kernels: 卷积核,形状为 (F, C, HH, WW),C是图片输入层数,F是图片输出层数bias: 偏置,形状为 (F,)stride: 步长padding: 填充"""# 获取输入数据和卷积核的形状C, H, W = inputs.shapeF, _, HH, WW = kernels.shape# 对输入数据进行填充。在第一个轴(通常是通道轴)上不进行填充,在第二个轴和第三个轴(通常是高度和宽度轴)上在开始和结束位置都填充padding个值。inputs_pad = np.pad(inputs, ((0, 0), (padding, padding), (padding, padding)))# 初始化输出数据,卷积后的图像size大小H_out = 1 + (H + 2 * padding - HH) // strideW_out = 1 + (W + 2 * padding - WW) // strideoutputs = np.zeros((F, H_out, W_out))# 进行卷积操作for i in range(H_out):for j in range(W_out): # 找到out图像对于的原始图像区域,然后对图像进行sum和biasinputs_slice = inputs_pad[:, i*stride:i*stride+HH, j*stride:j*stride+WW] outputs[:, i, j] = np.sum(inputs_slice * kernels, axis=(1, 2, 3)) + bias# axis=(1, 2, 3)表示在通道、高度和宽度这三个轴上进行求和。return outputs# test# 创建模拟数据
inputs = np.random.rand(3, 5, 5) # 3通道,5x5的输入数据
kernels = np.random.rand(4, 3, 3, 3) # 4个输出通道,3通道的3x3卷积核
bias = np.random.rand(4) # 4个偏置项
stride = 1
padding = 1# 调用conv2d函数进行卷积操作
outputs = conv2d(inputs, kernels, bias, stride, padding)# 打印卷积后的输出形状
print("卷积后的输出形状:", outputs.shape)
查看全文
99%的人还看了
相似问题
- CNN卷积神经网络Python实现
- 竞赛 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python
- 时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)
- 卷积神经网络(CNN)天气识别
- FSOD论文阅读 - 基于卷积和注意力机制的小样本目标检测
- YOLOv8改进 | 如何在网络结构中添加注意力机制、C2f、卷积、Neck、检测头
- 人工智能-卷积神经网络之多输入多输出通道
- 多维时序 | MATLAB实现TCN-selfAttention自注意力机制结合时间卷积神经网络多变量时间序列预测
- 基于轻量级卷积神经网络CNN开发构建打架斗殴识别分析系统
- 利用梯度上升可视化卷积核:基于torch实现
猜你感兴趣
版权申明
本文"pytorch复现_conv2d":http://eshow365.cn/6-30908-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!