1、cascade级联和concatenate串联区别是什么?
级联将上一系统的输出作为下一系统的输入, 串联将两个系统的输出相加.
2、torch.view()
非常有用,决定以什么形状改变tensort temp.view(N,-1)
3、pytorch 二维卷积输入形状:
输入:(b,c,w,h), 输出同样(b,c,w,h)
4、接上,计算dice
“”"
:param output: (BS, outchannel, Z, Y, X)
:param targets: (BS, class_num,Z, Y, X)
“”"
def forward(self, input, target):
N = target.size(0)
smooth = 1
# 以什么形状输出
input_flat = input.view(N, -1)
target_flat = target.view(N, -1)
intersection = input_flat * target_flat
loss = 2 * (intersection.sum(1) + smooth) / (input_flat.sum(1) + target_flat.sum(1) + smooth)
loss = 1 - loss.sum() / N
return loss
5、在resize,zoom的时候,GT没用进行归一化也就是把范围(0,255) 缩放到(0,1) 的时候,插值算法一定要选择最近邻算法,不然GT的值会乱。。。而且好像也没别的办法改变其值,因为transform要求数据类型是PIL的Image,但是image范围是(0,255),所有无法改变其值,在归一化之前只能最近邻。
6、transforms数据增强之后,要进行ToTensor和normalize,ToTensor会将image的shape改变为:从h,w,c -> c,w,h,并将每一个数值归一化到[0,1],其归一化方法比较简单,直接除以255即可。 torch.tensorfloat(),如果一通道,会squence,要torch.tensorfloat().nosquence.
7、样本总数:len(train_dataloader.dataset)。每一次epcoh: len(train_dataloader)
DC = DC / len(train_dataloader.dataset)
avg_loss = epoch_loss / len(train_dataloader)
8、输入网络进行训练 int(256 * aspect_ratio) - int(256 * aspect_ratio) % 16 或者 int((256 * aspect_ratio)/16)*16,在unet中防止遇到四次下采样和四次上采样除不尽的情况,然后下采样除不尽会向下取整,上采样除不尽会向上取整。