6.deep_residual_network

2023-10-31

import torch
import torch.nn as nn
import torchvision
import torchvision.transforms as transforms
device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
num_epochs=3
batch_size=20
learning_rate=0.001
transform=transforms.Compose([transforms.Pad(4),transforms.RandomHorizontalFlip(),transforms.RandomCrop(32),transforms.ToTensor()])
train_dataset=torchvision.datasets.CIFAR10(root='../../data/',train=True,transform=transform,download=True)
test_dataset=torchvision.datasets.CIFAR10(root='../../data/',train=False,transform=transforms.ToTensor())
train_loader=torch.utils.data.DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True)
test_loader=torch.utils.data.DataLoader(dataset=test_dataset,batch_size=batch_size,shuffle=False)
def conv3x3(in_channels,out_channels,stride=1):
    return nn.Conv2d(in_channels,out_channels,kernel_size=3,stride=stride,padding=1,bias=False)
class ResidualBlock(nn.Module):
    def __init__(self,in_channels,out_channels,stride=1,downsample=None):
        super(ResidualBlock,self).__init__()
        self.conv1=conv3x3(in_channels,out_channels,stride)
        self.bn1=nn.BatchNorm2d(out_channels)
        self.relu=nn.ReLU(inplace=True)
        self.conv2=conv3x3(out_channels,out_channels)
        self.bn2=nn.BatchNorm2d(out_channels)
        self.downsample=downsample
    def forward(self,x):
        residual=x
        out=self.conv1(x)
        out=self.bn1(out)
        out=self.relu(out)
        out=self.conv2(out)
        out=self.bn2(out)
        if self.downsample:#残差线是否需要下采样
            residual=self.downsample(x)
        out+=residual
        out=self.relu(out)
        return out
class ResNet(nn.Module):
    def __init__(self,block,layers,num_classes=10):
        super(ResNet,self).__init__()
        self.in_channels=16
        self.conv=conv3x3(3,16)
        self.bn=nn.BatchNorm2d(16)
        self.relu=nn.ReLU(inplace=True)
        self.layer1=self.make_layer(block,16,layers[0])
        self.layer2=self.make_layer(block,32,layers[1],2)
        self.layer3=self.make_layer(block,64,layers[2],2)
        self.avg_pool=nn.AvgPool2d(8)
        self.fc=nn.Linear(64,num_classes)
    def make_layer(self,block,out_channels,blocks,stride=1):
        downsample=None
        if (stride!=1) or (self.in_channels!=out_channels):
            downsample=nn.Sequential(conv3x3(self.in_channels,out_channels,stride=stride),nn.BatchNorm2d(out_channels))
        layers=[]
        layers.append(block(self.in_channels,out_channels,stride,downsample))
        self.in_channels=out_channels
        for i in range(1,blocks):
            layers.append(block(out_channels,out_channels))
        return nn.Sequential(*layers)
    def forward(self,x):
        out=self.conv(x)
        out=self.bn(out)
        out=self.relu(out)
        out=self.layer1(out)
        out=self.layer2(out)
        out=self.layer3(out)
        out=self.avg_pool(out)
        out=out.view(out.size(0),-1)
        out=self.fc(out)
        return out
model=ResNet(ResidualBlock,[2,2,2]).to(device)
criterion=nn.CrossEntropyLoss()
optimizer=torch.optim.Adam(model.parameters(),lr=learning_rate)
def update_lr(optimizer,lr):
    for param_group in optimizer.param_groups:
        param_grop['lr']=lr

total_step=len(train_loader)
curr_lr = learning_rate
for epoch in range(num_epochs):
    for i,(images,labels) in enumerate(train_loader):
        images=images.to(device)
        labels=labels.to(device)
        outputs=model(images)
        loss=criterion(outputs,labels)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        if (i+1)%100 ==0:
            print('epoch [{}/{}],step[{}/{}],loss:{:.4f}'.format(epoch+1,num_epochs,i+1,total_step,loss.item()))
    if (epoch+1)%1==0:
        curr_lr/=3
        update_lr(optimizer,curr_lr)
model.eval()
with torch.no_grad():
    correct=0
    total=0
    for image,labels in test_loader:
        images=images.to(device)
        labels=labels.to(device)
        outputs=model(images)
        _,predicted=torch.max(outputs.data,1)
        total+=labels.size(0)
        correct+=(predicted==labels).sum().item()
    print('accuracy of the model on the test images:{}%'.format(100*correct/total))


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

6.deep_residual_network 的相关文章

  • AI绘画StableDiffusion美女实操教程:斗破苍穹-小医仙-天毒女(附高清图下载)

    小医仙 是天蚕土豆所著玄幻小说 斗破苍穹 1 及其衍生作品中的角色 身负厄难毒体 食毒修炼 万毒不侵 通体毒气 这种会无意识地杀死别人的体质让天性善良的小医仙成为人憎鬼厌的天毒女 在萧炎多次帮助下得以控制 出图效果展示 资源整合 今天我们就
  • 探秘高逼格艺术二维码的制作过程-AI绘画文生图

    前几天看到几个逼格比较高的二维码 然后自己动手做了一下 给大家看看效果 平台限制 已加马赛克 1 文生图 狮子 2 文生图 城市 下边将开始介绍怎么做的 有兴趣的可以继续读一读 这里使用的AI绘图工具是Stable Diffusion 没有
  • 哈工大团队开源医学智能问诊大模型

    原文 CVHub 门头沟学院AI视觉实验室御用公众号 学术 科研 就业 185篇原创内容 公众号 Title HuaTuo Tuning LLaMA Model with Chinese Medical KnowledgePDF https
  • ChatGPT专业应用:生成奖项方案

    正文共 925 字 阅读大约需要 4 分钟 人力资源等必备技巧 您将在4分钟后获得以下超能力 生成奖项方案 Beezy评级 A级 经过寻找和一段时间的学习 一部分人能掌握 主要提升效率并增强自身技能 推荐人 Kim 编辑者 Yolanda
  • 【吴恩达-AIGC/ChatGPT提示工程课程】第九章 - 总结

    吴恩达 AIGC ChatGPT提示工程课程 第九章 总结 恭喜你完成了这门短期课程 总的来说 在这门课程中 我们学习了关于prompt的两个关键原则 编写清晰具体的指令 如果适当的话 给模型一些思考时间 你还学习了迭代式prompt开发的
  • Pytorch复现经典扩散模型DDPM&DDIM及分布式训练应用

    0 前言 当前 生成式人工智能 AIGC 已被越来越广泛应用在工业 动漫业 设计业等诸多场景 我们都知道现阶段主流的生成模型如生成对抗网络 GAN 自分编码器 VAE 流模型 Flow based Models 和扩散模型 Diffusio
  • 有没有哪个瞬间,让你突然对ChatGPT感到失望?

    不知道你是否和我一样 在第一次使用ChatGPT输入Prompt 并得到答复的那一刻 都会忍不住地赞叹一句 握草 但随着时间慢慢拉长 体验不断深入 想法也会慢慢改变 主题图 by Midjourney Prompt The moment o
  • AIGC:人人可用的新时代,ChatGPT背后的技术将深刻改变工作模式,重塑商业形态...

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年8月份全网热门报告合集 ChatGPT提词示例 让你的ChatGPT聪明100倍 超百页干货资料 AI应用的难点 痛点与未来 202
  • 最近读的AIGC相关论文思路解读

    AIGC之SD可控生成论文阅读记录 提示 本博客是作者本人最近对AIGC领域相关论文调研后 临时记录所用 所有观点都是来自作者本人局限理解 以及个人思考 不代表对 如果你也正好看过相关文章 发现作者的想法和思路有问题 欢迎评论区留言指正 既
  • AI绘画Stable Diffusion原理之扩散模型DDPM

    前言 传送门 stable diffusion Git 论文 stable diffusion webui Git Google Colab Notebook部署stable diffusion webui Git kaggle Noteb
  • 美创科技发布“韧性”数据安全防护体系框架

    4月13日 美创科技数据安全产品架构升级发布会顺利举办 会上 美创重磅发布 韧性 数据安全防护体系框架 全新数据安全框架 以 资产 为中心 由内而外 以 看见 基石 旨在通过构建 弹性和韧性 可见性 适应性进化 的数据安全防护能力 帮助用户
  • 数据决定AIGC的高度,什么又决定着数据的深度?

    有人曾言 数据决定人工智能发展的天花板 深以为然 随着ChatGPT等AIGC应用所展现出的强大能力 人们意识到通用人工智能的奇点正在来临 越来越多的企业开始涌入这条赛道 在AIGC浪潮席卷全球之际 数据的重要性也愈发被业界所认同 之所以会
  • AIGC之Stable Diffusion 提示词学徒库

    前言 描述 本文主要用来记录 提示词TAG 一 提示词 1 提升画面品质的提示词 masterpiece 杰作 best quality 最佳品质 ultra highers 超高分辨率 8k resolution 8k分辨率 realis
  • 清华大学AIGC发展研究报告1.0版震撼发布!192页PPT

    来源 清元宇宙 人工智能无疑是2023年最受关注的科技热点 作为将会掀起人类再一次生产力革命的重大技术突破 人工智能受到了全球范围内各领域人士的高度关注 近日 清华大学沈阳教授团队发布了 AIGC发展研究报告1 0版 总计192页 分为技术
  • AIGC潮水中,重新理解低代码

    如果将一句话生成应用形容成L4级的 无人驾驶 伙伴云的 AI搭建 则更像L2 级的 辅助驾驶 作者 斗斗 出品 产业家 2023年 AIGC下的低代码赛道 暗流涌动 对于 AI搭建 的搭建效果 尤其是在场景覆盖的广度上 连我自己也感觉比较意
  • AIGC(AI Generated Content,人工智能生成内容)

    AIGC AI Generated Content 人工智能生成内容 什么是AIGC AIGC Artificial Intelligence Generated Content AI Generated Content 中文译为人工智能生
  • GPT系列训练与部署——GPT2环境配置与模型训练

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 Python从零开始进行AIGC大模型训练与推理 系列文章 地址为 https blog csdn net suiyingy article details 130169592 Colo
  • 【打造优质CSDN热榜评论区】让AI给评论打分!

    大家好啊 我是豆小匠 1 专栏背景 作为CSDN的老用户 自从CSDN强调要打造优质评论区后 热榜的评论区仍旧有进步空间 因此在这个专栏会结合AI 探索一些方法来提高评论区的质量 这个专栏仅为博主的想法 作为技术学习使用 与官方无关联 2
  • 10000亿规模AIGC产业,谁会成为下一个“巨头”?

    ChatGPT的热潮带火了大语言模型 也让AIGC插上了效率的翅膀 Midjourney 妙鸭相机等产品相继走入大众用户视线 根据艾瑞咨询的预测 2023年中国AIGC产业规模约为143亿元 而随着相关生态的完善 到2030年 中国AIGC
  • Creator AIGC插件!一句话生成人脸

    近几个月以来 AIGC 一路高歌猛进 让我们见证了一场行业革命 然而 AIGC 在 3D 资产领域却仍是业内的难题 少有突破 小编今天给大家推荐一个 3D 角色 AIGC 利器 ChatAvatar 它可以算是 3D AIGC 领域的一匹黑

随机推荐