chenyuntc / pytorch-book

PyTorch tutorials and fun projects including neural talk, neural style, poem writing, anime generation (《深度学习框架PyTorch:入门与实战》)
MIT License
11.91k stars 3.71k forks source link

第四章关于resnet的疑问 #161

Open boye2019 opened 5 years ago

boye2019 commented 5 years ago

作者在resnet代码中写道: def forward(self, x): out = self.left(x) residual = x if self.right is None else self.right(x) out += residual return F.relu(out) 我对residual = x if self.right is None else self.right(x)不理解,根据Residual block结构图,左边是普通的卷积,右边是直连没有任何操作,但是在代码中residual = x if self.right is None else self.right(x)和out += residual是不是意味着无论走不走右边都要进行左边的卷积操作,是不是应该改成out = x + self.left(x) if self.right is None else self.right(x)下一行代码为return F.relu(out)??

navy63 commented 4 years ago

这里写的没有问题,但是Resnet34写的不是正常的代码,正常代码层数为3.4.6.3层结构,作者这里写成了4.5.7.4层结构, for i in rang(1,block_num) 应该是block_num-1才对,因为之前layers.append了一次。

shazhongcheng commented 4 years ago

请问你们谁有第十章数据集吗?可以百度云分享一下吗?感激不尽!

bluoluo commented 4 years ago

这里写的没有问题,但是Resnet34写的不是正常的代码,正常代码层数为3.4.6.3层结构,作者这里写成了4.5.7.4层结构, for i in rang(1,block_num) 应该是block_num-1才对,因为之前layers.append了一次。

1.对于layer1234,可视化出来就是3463层 2.但是对于layer1 应该是shortcut=None, 即 layers.append(ResidualBlock(inchannel, outchannel, stride, shortcut)) 此处前面应该有个判断把layer1排除

YunhaoDu commented 3 years ago

这里写的没有问题,但是Resnet34写的不是正常的代码,正常代码层数为3.4.6.3层结构,作者这里写成了4.5.7.4层结构, for i in rang(1,block_num) 应该是block_num-1才对,因为之前layers.append了一次。

您对range的理解是错的