import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import cv2
import torch.nn.functional as F
img = cv2.imread('E:/zhangzijiao/tu/29_29.png')#读入的图像是numpy形式
#然后对输入图像转换为tensor形式
img1=torch.tensor(img,dtype=torch.float32)/255
print(img1.shape) #此时图片的尺寸为(H,W,C)形式
img1=img1.permute(2,0,1).unsqueeze(0) #输入卷积中也必须有batch_size这一维度,permute(2,0,1)进行维度互换(C,H,W)
# 后一部分unsqueeze(0)是加入batch_size这一维度
print('1',img1.shape)#(B,C,H,W)
#conv=nn.Conv2d(in_channels=3,out_channels=3,kernel_size=3,stride=2,padding=1)
model = nn.Sequential(
nn.Conv2d(in_channels=3,out_channels=3,kernel_size=3,stride=1,padding=1,bias=False),
nn.Conv2d(in_channels=3,out_channels=3,kernel_size=3,stride=2,padding=1,bias=False),
nn.Conv2d(in_channels=3,out_channels=3,kernel_size=3,stride=2,padding=1,bias=False)
)
#print(conv)
y=model(img1)
print('2',y.shape)
model2 = nn.Sequential(nn.ConvTranspose2d(in_channels=3,out_channels=3,kernel_size=3,stride=2,padding=1,bias=False),
nn.ConvTranspose2d(in_channels=3,out_channels=3,kernel_size=3,stride=2,padding=1,bias=False),
)
#下边显示经过一次卷积后的图像
y = y.squeeze(0).permute(1,2,0)*255 #转化维度,并且转化为0~255,数值类型为uint8
y = y.detach().numpy() #tensor变成numpy
y = y.astype('uint8')
print('3',y.shape)
#权重默认随机可视化
plt.subplot(121)
plt.imshow(img)
plt.title('yuantu')
plt.subplot(122)
plt.imshow(y)
plt.title('liangcijuanji')
plt.show()
![](https://img-blog.csdnimg.cn/img_convert/4fcd89ce582899340b58f1032d85fdad.png)