resnet源码pytorch_pytorch yolov3训练自己的数据集

resnet源码pytorch_pytorch yolov3训练自己的数据集书上的,很抽象fromtorchimportnnfromtorch.nnimportfunctionalasFimportosimporttorchvisionclassResidualBlock(nn.Module):def__init__(self,inchannel,outchannel,stride=1,shortcut=None…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

书上的,很抽象

from torch import nn
from torch.nn import functional as F
import os
import torchvision


class ResidualBlock(nn.Module):
    def __init__(self, inchannel, outchannel, stride=1, shortcut=None):
        super(ResidualBlock, self).__init__()
        self.left = nn.Sequential(
            nn.Conv2d(inchannel, outchannel, 3, stride=stride, padding=1, bias=False),
            nn.BatchNorm2d(outchannel),
            nn.ReLU(inplace=True),
            nn.Conv2d(outchannel, outchannel, 3, stride=1, padding=1, bias=False),
            nn.BatchNorm2d(outchannel)
        )
        self.right = shortcut

    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)


class ResNetmy(nn.Module):
    def __init__(self, num_classes=1000):
        super(ResNetmy, self).__init__()

        self.pre = nn.Sequential(
            nn.Conv2d(3, 64, 7, 2, 3, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(3, 2, 1))
        self.layer1 = self._make_layer(64, 128, 3)
        self.layer2 = self._make_layer(128, 256, 4, stride=2)
        self.layer3 = self._make_layer(256, 512, 6, stride=2)
        self.layer4 = self._make_layer(512, 512, 3, stride=2)
        self.fc = nn.Linear(512, num_classes)

    def _make_layer(self, inchannel, outchannel, block_num, stride=1):
        shortcut = nn.Sequential(
            nn.Conv2d(inchannel, outchannel, 1, stride, bias=False),
            nn.BatchNorm2d(outchannel)
        )

        layers = []
        layers.append(ResidualBlock(inchannel, outchannel, stride, shortcut))

        for i in range(1, block_num):
            layers.append(ResidualBlock(outchannel, outchannel))
        return nn.Sequential(*layers)

    def forward(self, x):
        print('pre:',x.size())
        x = self.pre(x)
        print(x.size())
        x = self.layer1(x)
        print(x.size())
        x = self.layer2(x)
        print(x.size())
        x = self.layer3(x)
        print(x.size())
        x = self.layer4(x)
        print(x.size())
        x = F.avg_pool2d(x, 7)
        print(x.size())
        x = x.view(x.size(0), -1)
        return self.fc(x)


if __name__ == '__main__':
    os.environ["CUDA_VISIBLE_DEVICES"] = "3"
    model = ResNetmy()
    print(model)
    resnet34 = torchvision.models.resnet34(pretrained=False)
    print(resnet34)

自己搭的很复杂的一个

from torch import nn
from torch.nn import functional as F
import os
import torchvision
from torchvision.transforms import ToTensor

totensor = ToTensor()


class myRes34(nn.Module):
    def __init__(self):
        super(myRes34, self).__init__()
        self.pre = nn.Sequential(
            nn.Conv2d(3, 64, 7, 2, 3, bias=False),
            nn.MaxPool2d(2)
        )
        self.f64conv_1 = nn.Sequential(
            nn.Conv2d(64, 64, 3, 1, 1, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU(),
            nn.Conv2d(64, 64, 3, 1, 1, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU()
        )
        self.f64conv_2 = nn.Sequential(
            nn.Conv2d(64, 64, 3, 1, 1, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU(),
            nn.Conv2d(64, 64, 3, 1, 1, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU()
        )
        self.f64conv_3 = nn.Sequential(
            nn.Conv2d(64, 64, 3, 1, 1, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU(),
            nn.Conv2d(64, 64, 3, 1, 1, bias=False),
            nn.BatchNorm2d(64),
            nn.ReLU()
        )
        self.residual64_128 = nn.Sequential(
            nn.Conv2d(64, 128, 1, 2, bias=False),
            nn.BatchNorm2d(128)
        )
        self.f128conv_1 = nn.Sequential(
            nn.Conv2d(64, 128, 3, 2, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU(),
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128)
        )
        self.f128conv_2 = nn.Sequential(
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU(),
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU()
        )
        self.f128conv_3 = nn.Sequential(
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU(),
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU()
        )
        self.f128conv_4 = nn.Sequential(
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU(),
            nn.Conv2d(128, 128, 3, 1, 1, bias=False),
            nn.BatchNorm2d(128),
            nn.ReLU()
        )
        self.residual128_256 = nn.Sequential(
            nn.Conv2d(128, 256, 1, 2, bias=False),
            nn.BatchNorm2d(256)
        )
        self.f256conv_1 = nn.Sequential(
            nn.Conv2d(128, 256, 3, 2, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256)
        )
        self.f256conv_2 = nn.Sequential(
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU()
        )
        self.f256conv_3 = nn.Sequential(
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU()
        )
        self.f256conv_4 = nn.Sequential(
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU()
        )
        self.f256conv_5 = nn.Sequential(
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU()
        )
        self.f256conv_6 = nn.Sequential(
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.Conv2d(256, 256, 3, 1, 1, bias=False),
            nn.BatchNorm2d(256),
            nn.ReLU()
        )
        self.residual256_512 = nn.Sequential(
            nn.Conv2d(256, 512, 1, 2, bias=False),
            nn.BatchNorm2d(512)
        )
        self.f512conv_1 = nn.Sequential(
            nn.Conv2d(256, 512, 3, 2, 1, bias=False),
            nn.BatchNorm2d(512),
            nn.ReLU(),
            nn.Conv2d(512, 512, 3, 1, 1, bias=False),
            nn.BatchNorm2d(512)
        )
        self.f512conv_2 = nn.Sequential(
            nn.Conv2d(512, 512, 3, 1, 1, bias=False),
            nn.BatchNorm2d(512),
            nn.ReLU(),
            nn.Conv2d(512, 512, 3, 1, 1, bias=False),
            nn.BatchNorm2d(512),
            nn.ReLU()
        )
        self.f512conv_3 = nn.Sequential(
            nn.Conv2d(512, 512, 3, 1, 1, bias=False),
            nn.BatchNorm2d(512),
            nn.ReLU(),
            nn.Conv2d(512, 512, 3, 1, 1, bias=False),
            nn.BatchNorm2d(512),
            nn.ReLU()
        )
        self.fc = nn.Linear(512, 1000)
        self.myrelu1 = nn.ReLU()
        self.myrelu2 = nn.ReLU()
        self.myrelu3 = nn.ReLU()

    def forward(self, x):
        x = self.pre(x)
        x = self.f64conv_1(x)
        x = self.f64conv_2(x)
        x = self.f64conv_3(x)
        print(type(x))
        x = self.myrelu1(self.f128conv_1(x) + self.residual64_128(x))
        x = self.f128conv_2(x)
        x = self.f128conv_3(x)
        x = self.f128conv_4(x)
        x = self.myrelu2(self.f256conv_1(x) + self.residual128_256(x))
        x = self.f256conv_2(x)
        x = self.f256conv_3(x)
        x = self.f256conv_4(x)
        x = self.f256conv_5(x)
        x = self.f256conv_6(x)
        x = self.myrelu3(self.f512conv_1(x) + self.residual256_512(x))
        x = self.f512conv_2(x)
        x = self.f512conv_3(x)
        x = F.avg_pool2d(x, 7)
        x = x.view(x.size(0), -1)
        return self.fc(x)


if __name__ == '__main__':
    os.environ["CUDA_VISIBLE_DEVICES"] = "3"
    model = myRes34()
    print(model)
    resnet34 = torchvision.models.resnet34(pretrained=False)
    print(resnet34)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185515.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 工业大数据的价值体现_如何分析转型带来的价值

    工业大数据的价值体现_如何分析转型带来的价值工业视角的转变        如果说前三次工业革命分别从机械化、规模化、标准化、和自动化等方向大幅度地提高了生产力,那么第四次工业革命与前面三次最大的区别在于:不再以制造端的生产力需求为出发点,而是将客户端价值作为整个产业链的核心,改变以往的工业价值链从生产端向消费端、上游向下游推动的模式,从客户端的价值需求出发提供客制化的产品和服务,并以此作为整个产业链的共同目标使整个产业链的各个环节实现协同优…

  • python协程系列_Python进阶

    python协程系列_Python进阶协程协程(Coroutine),又称微线程,纤程。(协程是一种用户态的轻量级线程)作用:在执行A函数的时候,可以随时中断,去执行B函数,然后中断B函数,继续执行A函数(可以自动切换)

  • SPI接口调试

    SPI接口调试以MCP2515芯片的SPI接口为例说明。

  • IPFS挖矿奖励分配机制,如何获得更大的出快机会,水滴科技Filecoin扇区封装及挖矿流程是怎样的?[通俗易懂]

    IPFS挖矿奖励分配机制,如何获得更大的出快机会,Filecoin扇区封装及挖矿流程是怎样的?Filecoin挖矿奖励区块奖励方面,在Filecoin总量20亿的FIL通证中,可以通过挖矿获得的部分为70%。其余为开发团队(15%)、投资人(10%),基金会(5%)的份额。就区块奖励而言,可挖通证的50%将在6年内挖出。目前奖励的具体参数还没有最终确定,当前测试网Filecoin区块奖励模型由“简单供给+网络基线供给”构成。  不少业内人士推测,在网络达到一定的目标存储规模之前,矿工的奖励会延迟

  • 无法与服务器建立安全链接怎么解决_无法与应用服务器建立连接

    无法与服务器建立安全链接怎么解决_无法与应用服务器建立连接http://www.cocoachina.com/bbs/read.php?tid=1686383nscurl–ats-diagnostics–verbose https://b

  • sql语句面试经典50题_sql基础知识面试题

    sql语句面试经典50题_sql基础知识面试题目录​SQL基础知识整理:常见的SQL面试题:经典50题三、50道面试题2.汇总统计分组分析3.复杂查询sql面试题:topN问题4.多表查询【面试题类型总结】这类题目属于行列如何互换,解题思路如下:其他面试题:SQL基础知识整理:select查询结果如:[学号,平均成绩:组函数avg(成绩)]from从哪张表中查找数…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号