class DQN(nn.Module):
    def __init__(self, in_planes, outputs, stride=1, hidden_size=128):
        super(DQN, self).__init__()
   #     self.conv1 = nn.Conv2d(in_channels=in_planes, out_channels=256, kernel_size=3,
   #                          stride=stride, padding=1, bias=False)
   #     self.conv2 = nn.Conv2d(in_channels=256, out_channels=128, kernel_size=3,
   #                          stride=stride, padding=1, bias=False)
   #     self.conv3 = nn.Conv2d(in_channels=128, out_channels=64, kernel_size=3,
   #                          stride=stride, padding=1, bias=False)
   #     # self.fc1 = nn.Linear(1568,64)

################################################
        ## 残差+ se注意力 ##
################################################
        self.conv1 = self._make_layer(SEBasicBlock, in_planes, 256, 2, stride=stride)
        self.conv2 = self._make_layer(SEBasicBlock, 256, 128, 2, stride=stride)
        self.conv3 = self._make_layer(SEBasicBlock, 128, 64, 2, stride=stride)

        # self.fc2 = nn.Linear(64, 128)
        # self.fc3 = nn.Linear(128, 256)
        # self.val_hidden = nn.Linear(256, 128)
        # self.adv_hidden = nn.Linear(256, 128)
        # self.val = nn.Linear(128, 1)
        # self.adv = nn.Linear(128, outputs)
        start_time=time.time()
        self.fc1 = nn.Linear(64*4*4, 128)
        self.fc2 = nn.Linear(128, 256)
        self.val_hidden = nn.Linear(256, 128)
        self.adv_hidden = nn.Linear(256,128)
        self.val = nn.Linear(128, 1)
        self.adv = nn.Linear(128, outputs)
        end_time=time.time()


可以像下面这样调用该网络结构:

dqn = DQN(in_planes=3, outputs=4)

输入参数'in_planes'表示输入图像的通道数,'outputs'表示输出的动作数。创建实例后,可以使用该网络进行前向传播和反向传播等操作。

原文地址: https://www.cveoy.top/t/topic/m7q8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录