深度学习代码20240102

news2024/12/28 2:04:15
import torch
from torch import nn
#搭建神经网络
class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        #在 Tudui 类的构造函数中调用其父类的构造函数,以确保执行父类的初始化操作
        #通过 super(Tudui, self).__init__(),我们获取了 Tudui 类的父类对象,
        # 然后调用了该父类的构造函数 __init__(),从而执行了父类的初始化逻辑
        self.model = nn.Sequential(
            nn.Conv2d(3,32,5,1,2),
            nn.MaxPool2d(2),
            nn.Conv2d(32,32,5,1,2),
            nn.MaxPool2d(2),
            nn.Conv2d(32,64,5,1,2),
            nn.MaxPool2d(2),
            nn.Flatten(),
            nn.Linear(64*4*4,64),
            nn.Linear(64,10)
        )
    def forward(self, x):
        x = self.model(x)
        return x

if __name__ == '__main__':
    tudui = Tudui()
    input = torch.ones((64,3,32,32))
    output = tudui(input)
    print(output.shape)

在这里插入图片描述问题:构造函数的名称拼写错误,应该是 init 而不是 int
一直报错说是没有正确初始化model属性
在这里插入图片描述

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

from src.model import*
#准备数据集
train_data = torchvision.datasets.CIFAR10(root="../data",train=True,
                                          transform=torchvision.transforms.ToTensor(),
                                          download=True)
test_data = torchvision.datasets.CIFAR10(root="../data",train=False,
                                          transform=torchvision.transforms.ToTensor(),
                                          download=True)
#legth长度
train_data_size = len(train_data)
test_data_size = len(test_data)
#输出数据集的长度信息
print("训练数据集的长度为:{}".format(train_data_size))
print("测试数据集的长度为:{}".format(test_data_size))
#利用Dataloader来加载数据集
train_dataloader = DataLoader(train_data,batch_size=64)
test_dataloader= DataLoader(test_data,batch_size=64)

#创建网络模型
tudui = Tudui()
#损失函数
loss_fn = nn.CrossEntropyLoss()
#优化器
learning_rate = 0.01
optimizer = torch.optim.SGD(tudui.parameters(),lr=learning_rate)
#设置训练网络的一些参数
#记录训练的次数
total_train_step = 0
#记录测试的次数
total_test_step = 0
#训练的轮数
epoch = 2

# 写入board
writer = SummaryWriter("logs")

for i in range (epoch):
    print("----第{}轮训练开始----".format(i+1))

    #训练步骤开始
    tudui.train()
    for data in train_dataloader:
        imgs,targets = data
        outputs = tudui(imgs)
        loss = loss_fn(outputs,targets)
        #优化器优化模型
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        total_train_step = total_train_step+1
        # batch=64,训练集=5W,学习一边训练集就需要781.25次训练
        writer.add_scalar("train loss", loss.item(), total_train_step)
        if total_train_step%100 == 0:
            print("训练次数:{},Loss:{}".format(total_train_step,loss.item()))

    #测试步骤开始
    tudui.eval()
    total_test_loss = 0
    total_accuracy = 0
    with torch.no_grad():
        for data in test_dataloader:
            imgs,targets = data
            print(targets)
            outputs = tudui(imgs)
            print(outputs)
            loss = loss_fn(outputs,targets)
            total_test_loss = total_test_loss + loss.item()
            accuracy = (outputs.argmax(1) == targets).sum()
            total_accuracy += accuracy

    print("整体测试集上的Loss:{}".format(total_test_loss))
    print("整体测试集上的正确率: {}".format(total_accuracy / test_data_size))
    writer.add_scalar("test loss", total_test_loss, total_test_step)
    writer.add_scalar("test accuracy", total_accuracy / test_data_size, total_test_step)
    total_test_step = total_test_step + 1
    torch.save(tudui, "tudui_{}.pth".format(i))
    #torch.save(tudui.state_dict(),"tudui_{}.ph".format(i))
    print("模型已保存")

writer.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot技术的美食烹饪互动平台的设计与实现

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1 课题背景 二…

【C++】浅拷贝 / 深拷贝 / 写时拷贝

文章目录 1. 经典的string类问题2. 浅拷贝3. 深拷贝3.1 传统写法的String类3.2 现代写法的String类 4. 写时拷贝 1. 经典的string类问题 上一篇博客已经对string类进行了简单的介绍,大家只要能够正常使用即可。 链接:【C】string 在面试中,面…

PMP报考别跟风!搞懂这些问题不踩坑

大家好,今天我想和大家分享一下关于PMP报考的一些问题。近年来,PMP认证越来越受到大家的关注,但是报考PMP并不是一件简单的事情,需要我们认真考虑和准备。下面我将从PMP是什么、PMP有什么用、PMP适合什么人考、PMP是学什么的、PMP…

Git开发工具基本使用

文章目录 前言Git仓库基本概念基本环境安装清除原先配置生成秘钥配置Host添加公钥Github添加Gitee添加测试 本地仓库基本概览查看提交日志(log)版本回退添加文件至忽略列表分支分支冲突 远程仓库推送到远程仓库从远程仓库中抓取和拉取 在Idea中使用Git总结 前言 这里只是对Git…

WPF+Halcon 培训项目实战(10):HS组件绘制图案

文章目录 前言相关链接项目专栏运行环境匹配图片模板匹配加载模板文件运行结果 绘制十字标 WPF HS组件绘制图像绘制和生成的区别 前言 为了更好地去学习WPFHalcon,我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只…

系列一、如何正确的获取Spring Cloud Alibaba Spring Cloud Spring Boot之间的版本对应关系

一、正确的获取Spring Cloud Alibaba & Spring Cloud & Spring Boot之间的版本对应关系 1.1、概述 Java发展日新月异,Spring Cloud Alibaba 、 Spring Cloud 、 Spring Boot在GitHub上的迭代也是异常的频繁,这也说明其社区很活跃,通…

NFS(文件存储服务)

题目 创建NFS共享文件夹,允许InsideCli可以远程挂载,映射挂载到D卷。共享文件夹路径为D:\shares\NFSshare。共享名称为NFSshare。允许未映射的用户访问。共享权限为读/写。服务配置步骤( 服务端 ) 步骤一 - 安装服务 步骤二 - 配置NFS服务 配置共享文件夹 选择共享路径

【BIG_FG_CSDN】C++ 数组与指针 (个人向——学习笔记)

一维数组 在内存占用连续存储单元的相同类型数据序列的存储。 数组是静态存储器的块;在编译时确定大小后才能使用; 其声明格式如下: 元素类型 数组名[常量];元素类型:数组中元素的数据类型; 常量&#…

Linux系统驱动要如何学习

1.你将获得: 快速上手 Linux 操作系统; 掌握Linux 内核工作原理; 掌握Linux 内核调试手段; 掌握复杂驱动:USB、PCIE、V4L2等 这门课程旨在为你打开Linux内核驱动的大门,让你在探索Linux内核的旅程中获得前…

HPM6750开发笔记《GPIO例程深度解析》

目录 创建工程: 代码分析: 1.头文件包含: 2.宏定义: 3.中断服务程序(ISR): 清除中断标志: 处理 LED 状态切换: 处理用户按键状态: 处理其他情况&…

Tomcat服务为什么起不来?

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 服务跑在Tomcat下面,有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种: 1. Tomcat服务…

Python模拟技巧实现自动抽屉登录和自动点赞

目录 一、引言 二、准备工作 三、自动抽屉登录 四、自动点赞 五、注意事项 六、案例分析 七、总结 一、引言 随着互联网的普及,人们越来越依赖于各种在线平台进行社交互动和信息获取。在这些平台上,用户需要登录才能享受各种服务,同时…

李宏毅机器学习第二十三周周报 Flow-based model

文章目录 week 23 Flow-based model摘要Abstract一、李宏毅机器学习1.引言2.数学背景2.1Jacobian2.2Determinant2.3Change of Variable Theorem 3.Flow-based Model4.GLOW 二、文献阅读1. 题目2. abstract3. 网络架构3.1 change of variable formula3.2 Coupling layers3.3Prop…

java数据结构与算法刷题-----LeetCode509. 斐波那契数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

跨境电商独立站代采1688货源网站

什么是淘宝代购 淘宝代购是近年兴起的一种购物模式,是帮国外客户购买中国商品。主要是通过万邦 科技的外贸代购系统,把淘宝、天猫等电商平台的全站商品通过API 接入到你的网站 上,瞬间就可以架设一个有数亿产品的大型网上商城,而且…

外贸人应该顺应趋势做外贸

2024年,有人疑惑外贸将如何发展?我想紧跟趋势是不会出错的,多年前网络没有如今那么发达,客户到中国参展或者来访就能确认订单。如今到处都是各种推广平台,客户足不出户就能在线上订购产品,如果你还是想靠之…

出版实务 | 书刊整体设计

文章目录 书刊整体设计概念目的原则内容外部装帧设计内文版式设计 书刊的形态术语书刊外表的翻本形态书刊的开本书刊装订样式种类平装精装骑马订装散页装 书刊的结构部件图书封面勒口书名页目录页 期刊面封底封 书刊版式设计概述版心、周空、版口、翻口的概念版面类型——和合面…

STM32CubeMX教程11 RTC 实时时钟 - 入侵检测和时间戳

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流程 3.2.3、添加其他必要代码 4、常用函数 5、烧录验…

英伟达「摊牌」,朋友变对手

对于曾经拿着英伟达的GPU进行自动驾驶系统开发的初创公司来说,可能未必会想到:某一天,这家全球GPU巨头,曾经的合作伙伴会成为自己的直接竞争对手。 上周,英伟达官方公众号发布招聘消息,公司正在扩大其自动驾…

实验4.4 动态路由OSPF协议的配置

实验4.4 动态路由OSPF协议的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.配置交换机和路由器的接口的IP地址等参数。2.配置动态路由OSPF协议,实现全网互通。 六、任务验收七、任务小结八、知识链接1.OSPF协议概念2.…