学做网站论坛插件,tom企业邮箱官网,智能微营销系统,免费做外贸的网站平台特点#xff1a;1x1卷积层相当于全连接层 作用#xff1a;1x1卷积用于调整网络层的通道数量和控制模型复杂度
输入形状#xff1a;(通道#xff0c;行#xff0c;列) (3,3,3) 卷积核形状#xff1a;(输出通道#xff0c;输入通道#xff0c;行#xff0c;列) (2,3,…特点1x1卷积层相当于全连接层 作用1x1卷积用于调整网络层的通道数量和控制模型复杂度
输入形状(通道行列) (3,3,3) 卷积核形状(输出通道输入通道行列) (2,3,1,1) 输出形状(通道行列) (2,3,3)
import cv2
import torch
from torch import nn
from d2l import torch as d2l一.使用神经网络全连接的方式实现对X使用1x1卷积
def corr2d_multi_in_out_1x1(X,K):c_i,h,w X.shapec_o K.shape[0]X X.reshape((c_i,h*w))K K.reshape((c_o,c_i))Y torch.matmul(K,X)# 全连接层中的矩阵乘法return Y.reshape((c_o,h,w))二.使用卷积函数计算 对X使用1x1卷积
def corr2d_multi_in(X,K):return sum(d2l.corr2d(x,k) for x,k in zip(X,K))
多输入和多输出通道
def corr2d_multi_in_out(X,K):# 注意没有遍历X此时的X是大写return torch.stack([corr2d_multi_in(X,k) for k in K],0)# 生成均值为0方差为1的 3通道的3x3矩阵
X torch.normal(0,1,(3,3,3))
# 生成均值为0方差为1的 输出通道为2输入通道为33x3矩阵
K torch.normal(0,1,(2,3,1,1))
Y1 corr2d_multi_in_out_1x1(X,K)
Y2 corr2d_multi_in_out(X,K)# Y1结果
tensor([[[-0.3174, -0.3736, -0.3822],[-1.2920, -0.7917, -1.0706],[ 2.1018, -1.1783, 0.7724]],[[-0.4680, 3.2644, 1.2653],[ 2.7322, -0.4164, -0.0810],[-2.7743, 2.0169, -1.3969]]])# Y2结果
tensor([[[-0.3174, -0.3736, -0.3822],[-1.2920, -0.7917, -1.0706],[ 2.1018, -1.1783, 0.7724]],[[-0.4680, 3.2644, 1.2653],[ 2.7322, -0.4164, -0.0810],[-2.7743, 2.0169, -1.3969]]])# 当Y1与Y2的差1e-6时继续执行否则报错。
assert float(torch.abs(Y1-Y2).sum()) 1e-6补充 assert函数
一、assert函数
断言函数
二、assert 表达式
当表达式为真时程序继续往下执行只是判断不做任何处理
当表达式为假时抛出AssertionError错误并将 [参数] 输出
三、用法
1、assert语句用来声明某个条件是真的。
2、如果你非常确信某个你使用的列表中至少有一个元素而你想要检验这一点并且在它非真的时候引发一个错误那么assert语句是应用在这种情形下的理想语句。
3、当assert语句失败的时候会引发一AssertionError。