调试踩坑记录:
- DataLoader的参数
PyTorch训练模型的torch.utils.data.DataLoader 参数
https://blog.csdn.net/qq_36653505/article/details/84728855
- sen12cr数据集读取之后的uint16数据类型并归一化
读取13通道的哨兵二数据的rgb波段
datat = gdal.Open(os.path.join(self.config.datasets_dir, 'ground_truth', str(self.imlist[index])))
tmp_img = datat.ReadAsArray()
img = tmp_img.transpose(1, 2, 0)
t = np.array(img[:, :, 1:4], dtype=np.uint16)#读取tiff图像的第234波段
t = t/np.max(t)
t = t.transpose(2, 0, 1)
np.clip用法
np.clip用法
https://blog.csdn.net/weixin_44791964/article/details/100000373
train.py
num_workers=0
否则EOFError: Ran out of input
3.GAN LOSS解答
【GAN】若干常见GAN中的Loss及部分知识
GAN的Loss为什么降不下去
GAN 网络训练中,G_loss上升,D_loss下降
4.numpy选波段是左闭右开
np.array[:,:,0:3]是波段0 1 2
5.python遥感百分比截断拉伸
python实现遥感图像百分比截断线性拉伸(支持多波段)
https://blog.csdn.net/suexisang/article/details/122788258
6.numpy.sum(axis=)
https://blog.csdn.net/weixin_28750421/article/details/116166114
7.断点处show图
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
plt.imshow(img)
plt.show()
8.设断点
import pdb
pdb.set_trace()
然后直接terminal运行就行了
9.查看变量
.device可以看是cpu还是gpu
.shape可以看大小
.dtype可以看数据类型
type(数据名称)可以看是tensor还是ndarray
10.把gpu上的数据变成cpu数组
vb_cpu = vb.cpu().detach().numpy()[0]
把ndarry变成torch.tensor
edges_ = torch.from_numpy(edges)
增加和减少tensor的维度
https://huaweicloud.csdn.net/63808c25dacf622b8df8a71b.html?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduactivity-2-125092937-blog-127889109.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduactivity-2-125092937-blog-127889109.pc_relevant_landingrelevant&utm_relevant_index=2
edges_ = torch.unsqueeze(edges_, 0)
cpu放到gpu
edges_ = edges_.cuda()
torch.nn.conv3d
torch.nn.Conv3d(in_channels, out_channels, kernel_size, stride=1, padding=0,
dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
https://mp.weixin.qq.com/s/1gBC-bp4Q4dPr0XMYPStXA
https://www.cnblogs.com/lyl0618/p/12524999.html
torch.nn.max_pool3d 3D池化
torch.nn.MaxPool3d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
model = torch.nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2), padding=(1, 0, 0))
https://www.cnblogs.com/lyl0618/p/12525143.html
torch.nn.functional.interpolate 插值
torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None)
https://blog.csdn.net/qq_50001789/article/details/120297401
torch.add 对两个张量进行相加,若格式不同则以复制的方式进行扩容后再相加。
https://blog.csdn.net/weixin_43820352/article/details/125995863
显示中间变量的图
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
img = torch.squeeze(output1[:,1:4,1,:,:],0).cpu().detach().numpy().transpose(1,2,0)
plt.imshow(img)
plt.show()
layer_norm = nn.LayerNorm(3, eps=1e-6)
plt.imshow((layer_norm(torch.from_numpy(img)).detach().numpy()))
torch.nn.Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None)
torch.nn.UpsamplingBilinear2d(size=(embed_dim * 16, embed_dim * 16), scale_factor=None, mode='nearest', align_corners=None)
upsample_0 = nn.Upsample(size=(embed_dim * 16, embed_dim * 16), mode='bilinear',align_corners=True)
up0 = upsample_0(torch.unsqueeze(conv5,0))