PyTorch 相当于 keras 模型
我正在学习 PyTorch,并尝试将 yolov3 模型(来自 keras)转换为 PyTorch。现在我面临的问题是有一个代码片段我发现很难将其转换为 PyTorch。现在
def yolo_body(inputs, num_anchors, num_classes):
"""Create YOLO_V3 model CNN body in Keras."""
darknet = Model(inputs, darknet_body(inputs))
x, y1 = make_last_layers(darknet.output, 512, num_anchors*(num_classes+5))
x = compose(
DarknetConv2D_BN_Leaky(256, (1,1)),
UpSampling2D(2))(x)
x = Concatenate()([x,darknet.layers[152].output])
#---- further code
我想知道 Keras 的 Model
的 pytorch 等价物是什么。我的 darknet_body
实现是
class yolov3:
----
----
def darknet_body(self, x):
"""Darknent body having 52 Convolution2D layers"""
x = self.DarknetConv2D_BN_Leaky(32, (3, 3))(x)
x = self.resblock_body(x, 64, 1)
x = self.resblock_body(x, 128, 2)
x = self.resblock_body(x, 256, 8)
x = self.resblock_body(x, 512, 8)
x = self.resblock_body(x, 1024, 4)
return x
和 resblock_body
实现是。
class yolov3:
----
----
def resblock_body(self, x, num_filters, num_blocks):
"""A series of resblocks starting with a downsampling Convolution2D"""
# Darknet uses left and top padding instead of 'same' mode
x = torch.nn.ZeroPad2d(((1, 0), (1, 0)))(x)
x = self.DarknetConv2D_BN_Leaky(num_filters, (3, 3), strides=(2, 2))(x)
for i in range(num_blocks):
y = compose(
self.DarknetConv2D_BN_Leaky(num_filters // 2, (1, 1)),
self.DarknetConv2D_BN_Leaky(num_filters, (3, 3)),
)(x)
x = torch.add(x, y)
return x
我还想知道如何获得像 darknet.layers[152]
这样的层号,如 yolo_body
中所做的那样。
谢谢。
I am learning PyTorch and I am trying to convert a yolov3 model (from keras) to PyTorch. Now problem I am facing is that there is a code snippet which I am finding difficult to convert it to PyTorch. That is
def yolo_body(inputs, num_anchors, num_classes):
"""Create YOLO_V3 model CNN body in Keras."""
darknet = Model(inputs, darknet_body(inputs))
x, y1 = make_last_layers(darknet.output, 512, num_anchors*(num_classes+5))
x = compose(
DarknetConv2D_BN_Leaky(256, (1,1)),
UpSampling2D(2))(x)
x = Concatenate()([x,darknet.layers[152].output])
#---- further code
Now I want to know what is the pytorch equvivlent of Model
from Keras. My darknet_body
implementation is
class yolov3:
----
----
def darknet_body(self, x):
"""Darknent body having 52 Convolution2D layers"""
x = self.DarknetConv2D_BN_Leaky(32, (3, 3))(x)
x = self.resblock_body(x, 64, 1)
x = self.resblock_body(x, 128, 2)
x = self.resblock_body(x, 256, 8)
x = self.resblock_body(x, 512, 8)
x = self.resblock_body(x, 1024, 4)
return x
And resblock_body
implementation is.
class yolov3:
----
----
def resblock_body(self, x, num_filters, num_blocks):
"""A series of resblocks starting with a downsampling Convolution2D"""
# Darknet uses left and top padding instead of 'same' mode
x = torch.nn.ZeroPad2d(((1, 0), (1, 0)))(x)
x = self.DarknetConv2D_BN_Leaky(num_filters, (3, 3), strides=(2, 2))(x)
for i in range(num_blocks):
y = compose(
self.DarknetConv2D_BN_Leaky(num_filters // 2, (1, 1)),
self.DarknetConv2D_BN_Leaky(num_filters, (3, 3)),
)(x)
x = torch.add(x, y)
return x
I also want to know how can I get the layer number like darknet.layers[152]
as done in yolo_body
.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论