构建网络遇到的问题-AlexNet

news2024/11/23 2:36:36

1.对模型进行初始化采用的一般代码

    def _initialize_weights(self):
        for m in self.modules():  # 遍历模型每一层
            if isinstance(m, nn.Conv2d):  # 判定m层是否属于nn.Conv2d类型
                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
                if m.bias is not None:
                    nn.init.constant_(m.bias, 0)
            elif isinstance(m, nn.Linear):  # 判定m层是否属于nn.Linear类型
                nn.init.normal_(m.weight, 0, 0.01)  # normal distribution正态分布
                # nn.init.normal从正态分布中取值将weight填满,mean平均值,std方差
                nn.init.constant_(m.bias, 0)
                # 用val值将m.bias填满

2.os.getcwd() 获取当前的工作目录

若当前文件是train.py位于在D:\projects\AlexNet\train.py

os.getcwd()返回D:\projects\AlexNet

3.assert语句

用一种更方便的方式将debug语句插入到程序中,等价于

if __debug__:
   if not expression:

        raise AssertionError

assert os.path.exists(image_path), "{} path does not exist.".format(image_path)

此句的意思就是如果image_path这条路径不存在则输出不存在

4.torchvision.datasets.ImageFolder()

常设置的两个参数:

root=文件所在位置

transform=数据要进行的操作

该函数要求:

1)每个类别需要单独成立一个文件夹
2)每个类别里面的图片需要按顺序排列(无论使用英语还是数字)

该函数生成对象有三个属性

classes:即目录下文件夹(类别)的个数

classes_to_idx:即目录下文件夹(类别)的对应的id,从0开始

imgs:整个大文件目录下的所有图片及对应类别

例如:

train_dataset = datasets.ImageFolder(root=os.path.join(image_path, "train"),
                                     transform=data_transform["train"])

实质上train_dataset里面的内容是由所有图片进行排列的,每一行都由(img,类别号)组成

输出第一张图片的类别号

注:此次训练Alexnet的训练数据集是没有标签的,但是每个类别的图片位于对应类别的的文件夹下,使用ImageFolder的用处一是将各类别文件夹下的图片汇聚,二是为各图片打上类别标签,还可以利用ImageFolder对象的class_to_idx属性回去类别和其对应编号

5.python与json的转换

(1)将python对象转化为json文件

json_str = json.dumps(cla_dict, indent=4)

写一个json文件

with open('class_indices.json', 'w') as json_file:
    json_file.write(json_str)

(2)读取一个json文件,并将json对象转化为python对象

with open("class_indices.json","r") as f:
    class_id = json.load(f)

6.程序运行进度条

train_bar = tqdm(train_loader, file=sys.stdout)

7.在模型训练完后,用图片去让模型进行分类,要注意模型使用的图片大小,输入的图像一般要是4维的。

8.模型最后输出一般是一个二维数组,(图片个数,类别个数)

在使用torch.softmax时要注意维度,dim=1代表对每行进行softmax

torch.argmax同理

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

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

相关文章

从自动化到智能化:AI如何推动业务流程自动化

引言:从自动化到智能化的必然趋势 在当今数字化时代,企业为了提升效率、降低成本,纷纷采用自动化技术来简化重复性任务。然而,传统自动化仅限于标准化操作,无法应对复杂的决策和多变的市场环境。随着人工智能&#xff…

基于springboot垃圾分类网站

基于springboot垃圾分类网站 摘 要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述垃圾分类网站的当…

Android开发拍身份证带人像框和国徽框效果

Android开发拍身份证带人像框和国徽框效果 拍身份证时往往要带上外框辅助用户拍照,这也是很常见的需求。 一、思路 自定义Camera和自定义拍照的界面,把外框画上去,做个遮罩 二、效果图: Android开发教程实战案例源码分享-拍身…

深入理解计算机系统-Bomb Lab

使用 头歌 平台 GDB 调试器 反汇编函数

动力锂电池电芯壳体市场前景:预计2030年全球市场规模将达到49.2亿美元

动力锂电池罐起着传输能量、承载电解液、保护安全等重要作用,是锂电池的重要组成部分。 据QYResearch调研团队最新报告“全球动力锂电池电芯壳体市场报告2024-2030”显示,预计2030年全球动力锂电池电芯壳体市场规模将达到49.2亿美元,未来几年…

分布式算法

分布式场景下的核心问题 分布式场景下困扰我们的3个核心问题(CAP):一致性、可用性、分区容错性。 1、一致性(Consistency):无论服务如何拆分,所有实例节点同一时间看到是相同的数据。 2、可用性…

开源链动 2+1 模式 S2B2C 商城小程序:社交电商团队为王的新引擎

摘要:本文深入探讨在社交电商领域中,团队的重要性以及如何借助开源链动 21 模式 S2B2C 商城小程序,打造具有强大竞争力的团队,实现个人价值与影响力的放大,创造被动收入,迈向财富自由之路,同时为…

从汽车高速线束角度浅谈中控屏黑屏、闪屏及信号阈值低故障-之AEM线束测试仪应用案例

故障成因和解决方案 随着车载信息娱乐技术的迅速发展,中控屏已经成为现代汽车的标配。然而,许多主机厂和消费者在车辆使用过程中常常遇到中控屏出现黑屏、闪屏以及信号阈值低等问题,给使用带来了诸多困扰。本文将从汽车高速线束的角度&#…

GPU服务器本地搭建Dify+xinference实现大模型应用

文章目录 前言一、显卡驱动配置1.检测显卡2.安装驱动 二、安装nvidia-docker二、安装Xinference1.拉取镜像2.运行Xinference3.模型部署 三、安装Dify1.下载源代码2.启动 Dify3.访问 Dify 四、Dify构建应用1.配置模型供应商2.聊天助手3.Agent 前言 本文使用的GPU服务器为UCloud…

MySQL: 数据类型介绍

文章目录 数据类型数值类型字符串类型日期类型 数据类型 数值类型 分为整型和浮点型: BIT类似于数据结构中的位图,BIT可以认为是一组二进制bit位. BIT(10)表示这个类型里就存最多10个bit位. 虽然TINYINT和SMALLINT更节省空间,但是还是更推荐使用INT或者BIGINT. 如果存储空间…

MySql语言操作数据库---增删改查数据库,表,数据

思维导图 SQL语言共分为四大类: 数据定义语言DDL:数据定义语言DDL用来创建数据库中的各种对象-----[库]、[表]、[视图]、[索引]、 数据操纵语言DML:(1) 插入:INSERT (2) 更新:UPDATE (3) 删除:DELETE 数据查询语言DQL:数据查询语…

Android 深层链接利用

为了能够从我们的应用程序打开另一个应用程序,我们通常通过声明我们想要访问的 Activity 类的名称来实现这一功能。但是,如果我们要打开的 Activity 在其清单文件中设置了android:exported"false" ,则无法使用此方法。而其中一种替…

人工智能有助于解决 IT/OT 集成安全挑战

思科的一项研究表明,信息技术 (IT) 和运营技术 (OT) 融合所带来的安全问题可以通过人工智能 (AI) 解决,尽管该技术也可能被恶意行为者利用。 该报告由思科和 Sapio Research 联合发布,对 17 个国家的 1,000 名行业专业人士进行了调查&#x…

基于Java,SpringBoot和Vue的仓库管理商品管理电商后台管理系统

摘要 基于Java、Spring Boot和Vue的仓库管理系统是一个现代化的库存管理解决方案,旨在提高仓库运营效率和准确性。系统采用Java作为后端开发语言,结合Spring Boot框架简化配置和部署过程,实现业务逻辑和数据处理。前端使用Vue.js构建用户界面…

2024.9.25 数据分析学习

资料: 【开课吧哩堂】数据挖掘项目之用户流失预警系统_哔哩哔哩_bilibili 五万字 | Spark吐血整理,学习与面试收藏这篇就够了!-腾讯云开发者社区-腾讯云 (tencent.com) 黑马程序员Spark全套视频教程,4天spark3.2快速入门到精通…

**CentOS7安装配置mysql**

CentOS7安装配置mysql 首先先将mysql57-community-release-el7.rpm解压出来 rpm -ivh mysql57-community-release-el7.rpmls /etc/yum.repos.d/ -l // 检查是否解压成功安装mysql yum install -y mysql-community-server可能会出现 GPG 密钥过期 rpm --import https://r…

一个可以免费上传样本图册的网站

在数字化时代,图像和样本图册的重要性不言而喻。无论是设计师、摄影师、艺术家还是普通用户,都需要一个可靠的平台来上传、分享和存储自己的作品。今天,给大家推荐一个可以免费上传样本图册的网站——【FLBOOK】,它为用户提供了无…

UE学习篇ContentExample解读------Blueprint_Communication-上

文章目录 总览描述批次阅览1.1 Basic communication with a target blueprint1.2 Basic communication via actor casting1.3 Blueprint communication via actor casting to child Blueprint1.4 Communicating with all actors of a specific class 概念总结致谢: …

关于预处理详解 #define 宏 #和##

#和## #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执⾏的操作可以理解为”字符串化“。 当我们有⼀个变量 int a 10; 的时候,我们想打印出: the value of a is 10 . 就可以写&#xff…

MySQL函数:流程函数

1.IF函数 基本语法:IF(expr1,expr2,expr3) 功能:如果value为true,返回t, 否则返回f 例如:这个里面expr1里面是false,返回的是Error,如果是true,返回OK select if(false, OK, Err…