问题记录
plt.imshow(train_data[3][0].permute(1, 2, 0)) 含义是什么?
先解释一下permute(1,2,0)的含义就是把原来位置排列为(0,1,2)的三个维度交换变成按照(1,2,0)排列,也就是第一个原来的第一个维度换到
第三个维度,第二个维度换到第一个维度,第三个维度换到第二个维度上。
这里一开始一直很好奇train_data怎么会有5个维度,后面知道,原来他把Msak和原来的image一起存的,所以是5个维度。
所以这里也就是取的batch_num=3的第一个image,也就是对应的image(mask对应的是[1]),再把通道交换到最后一个维度上,变成w*h*c的
形式。
self.base_layers[:3] 这是取哪一层?
这是取base_layers的前三层,分别是卷积层,bn层,relu层
model = UNet(n_class=1).cuda() 后面.cuda()是表示使用GPU的意思吗?
torch上的使用。是这个意思。
img[mask==1,0] = 255#为何含义?
这里是这样的,因为img是三维的,组织的过程是H*W*channel,所以这一句话的含义表示的就是在二维向量mask中元素值为1的点所对应的img的通道0的图上的hw位置上的元素灰度值设置为255.如果是RGB也就是变红了。
torch函数unsqueeze(para)含义
para为正整数时,就是在对应的位置增加一个维度。例如a.unsqueeze(1)。我们假设a的维度为(2,3);增加一个维度后就变成了(2,1,3);
para为负整数时,就是在倒数对应的位置增加一个维度。例如a.unsqueeze(-1)。我们假设a的维度为(2,1,3);增加一个维度后就变成了(2,1,3,1);
同样这里补充一个函数:squeeze(para).去掉某一个维度,只有当该维度为1时才能去掉,参数为0表示去掉所有维度为1的。