深度学习网络中基本操作代码实现
1 卷积操作
代码实现卷积操作
import torch
import torch.nn as nn
def MyCon2D(X,K):
h,w=K.shape
Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1)) #定义输出的大小
for i in range(Y.shape[0]):
for j in range(Y.shape[1]):
Y [i, j] = (X[i: i + h, j: j + w] * K).sum()X=torch.tensor([[0,1,2],[3,4,5],[6,7,8]])
return Y
#构造图中的运算
X=torch.tensor([[0,1,2],[3,4,5],[6,7,8]])
K=torch.tensor([[0,1],[2,3]])
print(X)
print(K)
MyCon2D(X,K)
tensor([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
tensor([[0, 1],
[2, 3]])
tensor([[19., 25.],
[37., 43.]])
池化操作
池化一般分为最大值池化和平均池化,类似于卷积操作却有不同于卷积操作
def Mypool(X,pool_size,mode=''):
X=X.float()
p_h,p_w=pool_size
Y=torch.zeros(X.shape[0]-p_h+1,X.shape[1]-p_w+1)
for i in range(Y.shape[0]):
for j in range(Y.shape[1]):
if mode=='max':
Y [i,j]=X[i:i+p_h,j:j+p_w].max()
elif mode=='avg':
Y [i,j]=X[i:i+p_h,j:j+p_w].mean()
return Y
Mypool(X,(2,2),mode='max') #最大值池化
tensor([[4., 5.],
[7., 8.]])
Mypool(X,(2,2),mode='avg') #平均池化
tensor([[2., 3.],
[5., 6.]])
动手学深度学习
版权声明:本文为Brandon_Hoo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。