全卷积网络(FCN)

https://zh-v2.d2l.ai/chapter_computer-vision/fcn.html

bilinear_kernel这个函数有没有大佬详细解释一样啊 :sweat_smile:

1 Like

module ‘d2l.torch’ has no attribute ‘Image’
我在coalb上边运行,在读入图片那部分会显示这个错误,这需要怎么修改呢


用m1 gpu(device = “mps”)训练fcn模型没有效果,而用device = "cpu"则正常。这是为什么呢?

我也和你出现了一样的情况,甚至在训练后的训练图中,没有出现训练损失的曲线,请问您现在解决了吗?

PyTorch使用单GPU训练结果就是正确的,使用多GPU训练结果就会出错。

1 Like

据此设计的卷积核形状如同“金字塔/四棱锥”,且只有k=2*s时才可以

也许是d2l的版本太老了,直接去下载d2l的源码。然后只要在自己项目下新建个d2l文件夹,把torch.py放进去就OK了。可以从这里下载https://github.com/d2l-ai/d2l-zh/tree/master/d2l

def bilinear_kernel(in_channels, out_channels, kernel_size):
    factor = (kernel_size + 1) // 2
    center = (kernel_size - 1) / 2 
    print(center)
    og = (torch.arange(kernel_size).reshape(-1, 1),
          torch.arange(kernel_size).reshape(1, -1))
    filt = (1 - torch.abs(og[0] - center) / factor) * \
           (1 - torch.abs(og[1] - center) / factor)
    print(filt)
    weight = torch.zeros((in_channels, out_channels,
                          kernel_size, kernel_size))
    weight[range(in_channels), range(out_channels), :, :] = filt
    return weight
conv_trans = nn.ConvTranspose2d(3, 3, kernel_size=4, padding=1, stride=2,
                                bias=False)
conv_trans.weight.data.copy_(bilinear_kernel(3, 3, 4));

这样或许更容易理解。

理解双线性插值的数学理论就可以了吧,代码 :rofl:

什么不直接训练一个原图到样式的,损失函数直接设定成像素的统计函数就好了呀,这里为什么需要一个原图的特征抽取网络呀

改单GPU后,出现OUT OF MEMORY错误

CUDA out of memory,Tried to allocate 76.00 MiB (GPU 0; 8.00 GiB total capacity; 1.10 GiB already allocated; 5.78 GiB free; 1.11 GiB reserved in total by PyTorch) 内存是够的

batch_size = 8 ,solved