1.8学习日记

Gerrit 使用操作手册 Gerrit是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(GerritRietveld),作者为Google公司的ShawnPearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利用网页浏览器,同一个团队的软件程序员,可以相互审核(Review)彼此修改后的程序代码,然后决定是继续提交还是取消提交。... 阅读详情

今天学习的是第五节上 图像分类实战——食物分类

        目的:通过模型预测图片是哪类食物

引用包:

import random
import torch
import torch.nn as nn
import numpy as np
import os
from PIL import Image #读取文件数据
from torch.utils.data import Dataset, DataLoader
from tqdm import tqdm  #查看读取进度

seed_everything()函数:

def seed_everything(seed):
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.benchmark = False
    torch.backends.cudnn.deterministic = True
    random.seed(seed)
    np.random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
#################################################################
seed_everything(0)
###############################################

        神经网络的训练是随机的过程,其结果效果随机,为了复现效果好的结果,就引用随机种子,确保每次随机出的结果一样

读取文件:

HW = 224 #深度学习领域一般让图片大小为224,而文件中的图片是512*512
#读文件
def read_file(path):
    for i in tqdm(range(11)):
        file_dir = path + "/%02d"%i
        file_list = os.listdir(file_dir)   #列出文件夹下所有文件名字

        xi = np.zeros((len(file_list),HW,HW,3), dtype=np.uint8) #读为整型
        yi = np.zeros(len(file_list), dtype=np.uint8)

        for j, img_name in enumerate(file_list):   #enumerate()既可以读到下标,也可以读到内容
            img_path = os.path.join(file_dir, img_name)
            img = Image.open(img_path)
            img = img.resize((HW,HW))
            xi[j, ...] = img   #...表示后面的维度表示一致,把图片放到第j个
            yi[j] = i  #标签

        # 把所有的xi,yi在0维合并
        if i == 0:
            X = xi
            Y = yi
        else:
            X = np.concatenate((X, xi), axis=0)
            Y = np.concatenate((Y, yi), axis=0)

    print("读到了%d个数据"%len(Y))
    return X,Y

数据集:


        数据增广(Data Augmentation)

         是一种在机器学习和数据分析中广泛使用的技术,主要用于通过对原始数据进行各种转换或操作来增加数据量,从而改善模型的训练效果,尤其是在数据较少时。数据增广的目的是通过人工扩展数据集,增加模型对不同情况的泛化能力,进而提升其预测准确性和鲁棒性。

        通俗来说,就是计算机对于同一图片不同尺寸、角度的形式识别不出来,因此全部看作训练集。即一张图片变为表现形式不同的图片进行训练。一般在取数据的时候进行增广

        在计算机视觉领域,数据增广技术尤其常见,以下是一些常用的增广技术:

  • 旋转:随机旋转图像一定角度,例如从-30度到+30度之间。
  • 裁剪:对图像进行随机裁剪,改变图像的大小或缩放比例。
  • 翻转:例如水平翻转或垂直翻转图像。
  • 颜色变换:调整图像的亮度、对比度、饱和度或色调等。
  • 缩放:对图像进行放大或缩小。
  • 加噪声:在图像中加入随机噪声,模拟不同的拍摄环境。

透视变换(仿射变换):通过透视或仿射变换来模拟不同的视角。


        数据变换

        训练集和验证集的数据变换不同,验证和测试的时候要用原图,训练的时候才需要不同的数据变换进行训练

#数据变换   
train_transform = transforms.Compose(
    [
        transforms.ToPILImage(),    #图片为224*224*3,模型需要3*224*224
        transforms.RandomResizedCrop(224),  #对图片随机放大裁切
        transforms.RandomRotation(50),  #对图片50°以内随机旋转
        transforms.ToTensor()   #变为张量进行模型运行
    ]
)

val_transform = transforms.Compose(
    [
        transforms.ToPILImage(),    #图片为224*224*3,模型需要3*224*224
        transforms.ToTensor()   #变为张量进行模型运行
    ]
)

模型

#模型
class myModel(nn.Module):
    def __init__(self, num_class):  #搭建模型框架
        super(myModel, self).__init__()
        #图片输入为3*224*224,要变为512*7*7,然后拉直、全连接、分类
        self.conv1 = nn.Conv2d(3, 64, 3, 1, 1)   #64*224*224
        self.bn1 = nn.BatchNorm2d(64)   #归一化
        self.relu = nn.ReLU()
        self.pool1 = nn.MaxPool2d(2)    #64*112*112

        self.layer1 = nn.Sequential(    #这样合并更方便,且美观
            nn.Conv2d(64, 128, 3, 1, 1),   #128*112*112
            nn.BatchNorm2d(128),   #归一化
            nn.ReLU(),
            nn.MaxPool2d(2)    #127*56*56
        )

        self.layer2 = nn.Sequential(
            nn.Conv2d(128, 256, 3, 1, 1),
            nn.BatchNorm2d(256),
            nn.ReLU(),
            nn.MaxPool2d(2)    #256*28*28
        )

        self.layer3 = nn.Sequential(
            nn.Conv2d(256, 512, 3, 1, 1),
            nn.BatchNorm2d(512),
            nn.ReLU(),
            nn.MaxPool2d(2)  #512*14*14
        )

        self.pool2 = nn.MaxPool2d(2)    #512*7*7
        self.fc1 = nn.Linear(25088, 1000)   #卷积 25088->1000
        self.relu2 = nn.ReLU()
        self.fc2 = nn.Linear(1000, num_class)   #1000->num_class(11)


    def forward(self, x):
        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu(x)
        x = self.pool1(x)
        x = self.layer1(x)
        x = self.layer2(x)
        x = self.layer3(x)
        x = self.pool2(x)
        x = x.view(x.size()[0], -1)     #拉直
        x = self.fc1(x)
        x = self.relu2(x)
        x = self.fc2(x)
        return x

深入解析SPLL单相软件锁相环:从SOGI原理到PI系数调优实践 本文深入解析SPLL单相软件锁相环技术,从SOGI原理到PI系数调优实践,详细介绍了其在数字电源设计中的应用。通过数学推导和实际调试经验,帮助工程师快速掌握锁相环的核心参数计算和优化方法,提升电网相位追踪的精确度和响应速度。 阅读详情

相关推荐

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

ArcMap:是集空间数据显示、矢量数据编辑、冲突数据检查(拓扑检查)、查询检索(地理编码)、统计(字段属性表)、报表生成、空间分析(ArcGIS Spatial Analyst)和高级制图(制图表达)等众多功能干一体的桌面应用平台软件。而且提供所见即所得的符号编辑器,令用户可以随心所欲地生成任意复杂的点、线、面符号。所支持的空间数据格式包括Arclnfo coverages、ESRI shapefiles、ArcSDE lavers、DXF、DWG、DGN、常见的图像格式、GRIDs、TINs等。

lxlmycsdnfree的博客 6565

1.8学习博客

今天练习了一些关于二分查找的题目。 第一题:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 由于本题目中求的是货船的容量,容易知道的是,该容量最小为所有货物重量中的最大值,最大为所有货物重量之和。可以从这个方面来进行二分查找。 部分代码: int shipWithinDays(int* weights, int weightsSize, int D){ int min=-1,max,sum=0; max=

weixin_47529865的博客 135

鼎阳示波器SCPI指令与MD5算法解锁带宽升级实战

本文详细介绍了鼎阳示波器通过SCPI指令与MD5算法实现带宽升级的实战流程。从设备连接、信息获取到Python密钥生成脚本解析,逐步指导用户完成升级操作,并涵盖常见问题排查与功能选件激活指南,帮助用户充分释放设备潜能。

www00的博客 348

opencv学习日记——CV_8UC1 含义

CV_8UC1 含义 预定义: CV_<bit_depth>(S|U|F)C<number_of_channels> 1–bit_depth—比特数—代表8bite,16bites,32bites,64bites—举个例子吧–比如说,如 如果你现在创建了一个存储–灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位–所以它对应的就是CV_8 2–S|U|F–S--代表—sign

weixin_51326570的博客 1万+

Word多级标题出现黑块的解决思路(word 数字必须介于1-1638之间)

遇到多级目录出现黑块问题,看到一篇博客完美解决,在此记录。

AI_Optimization的博客 3716

c764-基于Vue的实时温湿度监控系统

🌟 毕业设计指导交流 🌟 同学们好!作为一名计算机专业的技术爱好者,我在毕业设计领域积累了一些经验,希望能和大家分享交流。从选题到答辩,欢迎一起探讨技术问题。💡 技术方向: 熟悉Java全栈(SSM/Spring Boot)、Python数据分析、微信小程序/安卓开发等技术栈,可以互相学习项目开发经验。📂 学习资源: 整理了一些开源项目案例(含代码和文档),需要参考的同学可以留言讨论,也欢迎分享你的项目经验。🛠 交流内容:✨ 欢迎在评论区留言讨论,一起进步!记得遵守社区规范,保持学术

weixin_39513710的博客 1070

学习日记 8.1

前一篇文章讲了图片读取与显示,今天继续看图像运算、阈值处理和噪声去除。图像运算:图像的加法运算与加权融合阈值处理:二值化、截断等阈值操作,以及图像边框的填充噪声去除:椒盐噪声的生成与多种滤波器的去噪效果对比模块核心函数要点图像运算cv2.add()区分 NumPy 取模加法与 OpenCV 饱和加法;掌握加权融合阈值处理五种阈值类型 + 五种边框填充方式滤波去噪cv2.blur()椒盐噪声首选中值滤波。

YEEMOLY的博客 301

熵权法+TOPSIS完整教学:用Python评估大学科研实力(含雷达图绘制技巧)

本文提供了一套完整的熵权法与TOPSIS综合评价方法在Python中的实现教程,以高校科研实力评估为例,详细讲解了从数据预处理、客观权重计算、综合排序到结果可视化的全流程。重点介绍了如何利用Python进行数据清洗与转换,通过熵权法自动确定指标权重,并结合TOPSIS模型计算各院校与理想解的相对接近度进行排名。教程还包含了使用Matplotlib绘制专业雷达图的技巧,帮助读者直观呈现多维数据的对比分析结果,适用于各类多指标决策与绩效评估场景。

weixin_28520495的博客 416

WIN8学习日记1

Win8商店应用程序(Windows Store apps)开发,有如下方式: 1:Javascript + Html5 2:C#/C++/VB + XAML 我选择Javascript来开发,理由是对其他语言不熟悉。 首先创建一个默认的空白app 会产生几个默认文件: 1:default.html //这个是起始页面 2:default.js //def...

码农晚期 151

三种方法教你下载大模型到本地,总有一种适合你

本文主要介绍了下载大模型到本地的三种解决方案,希望能对同学们有所帮助。 文章目录 1. 场景/问题描述 2. 方案一:使用git 3. 方案二:镜像站 4. 方案三:高速下载工具(变体及自定义代码) 4.1 aria2 4.2 自定义代码

weixin_43178406的博客 17万+

拼多多笔试真题-多多送快递(C++/Py/Java /Js/Go)

拼多多技术岗笔试 8月2号真题,拼多多笔试第三题【多多送快递】,提供详细思路讲解以及Java、C++、Python、Go、JavaScript多语言代码实现。拼多多笔试真题【多多送快递】多语言题解。

qq_45776114的博客 293

学习日记1/8oj战记,冲呀

oj之战

jdjdhdha的博客 169

EMC基础知识总结

电磁干扰(Electromagnetic Interference),简称EMI,有和两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子设备产生的干扰信号通过空间耦合把干扰信号传给另一个电网络或电子设备。

学海无涯的专栏 1368

Java8 lambda学习日记(1)

Java8的一个重要的变化就是lambda的引入, 也就是函数式编程的引入, 作为新手的我, 是这样看待它的. 首先,我阅读的资料是< Java8 函数式编程 >.书中的第一章讲述了匿名内部类是不易读的代码.lambda对它进行了优化, http://www.importnew.com/16436.html 上可见// Java 8之前: new Thread(new Runnable() {

帰る場所もいない 347

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

2024暑假学习日记8.1-8.2

1.遇到了网络连接问题,自从换了一个wifi就时不时在谷歌浏览器出现这个问题,也不知道是谷歌浏览器的设置问题还是网络的问题。1首先学习Vue监测对象数据改变,Vue的底层有一个递归,一直递归到数据不再是对象,只要是对象都会配置一个getter和setter,setter就是用来监测数据改变的。2.学习过滤器,需要用到bootcdn上的day.js组件,但是点击官网上的链接无法跳转到正确的页面,没办法,只好引入在线文件了,幸好能用。学习列表过滤的过程中提及了箭头函数,但是之前还没学,需要补充学习。

2401_84827689的博客 1776

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

2020/8/1前端学习日记

早上睡醒电话面试了有赞的前端实习生,磕磕巴巴的不知道答的是啥,唉,菜是原罪。。 继续查漏补缺 回调 回调函数是异步执行或稍后执行的函数。程序不是从顶部到底部读取代码,而是异步程序可以根据先前的功能(如http请求或者文件系统读取)发生的顺序和速度,在不同时间执行不同的功能。 简单来说就是,中间某个函数可能会在原本应该在他下面的代码执行完之后在执行。 比如下面这段node的代码 var fs = require('fs') // 引入文件 var myNumber = undefined

weixin_42400773的博客 199

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

openfoam v8 波浪算例学习日记: 1. 查看Allrun

openfoam8 wave算例学习记录 观察Allrun 打开随机算例,第一步就是观察Allrun脚本的内容,并尝试理解每条命令的作用。 Allrun脚本如下#!/bin/sh cd ${0%/*} || exit 1 . $WM_PROJECT_DIR/bin/tools/RunFunctions runApplication blockMesh # blockMesh划分网格 runApplication extrudeMesh # 这条命令暂时不清楚作用 # 以下为网格加密,加密了两次

yunoicy的博客 5307

python基础学习日记---1.8

今天在某站学习了鱼c老师的零基础入门课程,学习了变量和字符串,以及使用写一段小游戏。

m0_63078568的博客 451

小铭的学习日记2022.8.1

小铭的学习日记2022.8.1

小铭的学习日记 167

学习日记2.8.1

参加比赛的Login项目....整了一天把验证码功能加上了......    把需要注意的事情提一下.   1.RMagick解压后的包里有gem文件,跟压缩包不同命,丫能不能不要那么大意,仔细找一找啊?     2.注意不要让生成图像和验证码的方法和显示验证码的方法在一起,这样导致的问题就是填写的验证码是过时的,等到用输入的验证码验证的时候,是用输入的验证码跟新生成的验证码效验。(=。。=)那就...

k_cancer的专栏 120

c++ 学习日记 2017.8.1

#include using namespace::std; class Shape{ public: void setWidth(int w){ width = w; } void setHeight(int h){ height = h; } protecte

kevinzhao2000的博客 168

找实习之从0开始的后端学习日记【8.1】

打算进行leetcode的专项训练贪心BFSDFS回溯/递归模拟滑窗树图今天就先刷动态规划了。

minatosan的博客 130

GEE学习日记1:逐日导出影像-以landsat8为例

【代码】GEE学习日记1:逐日导出影像-以landsat8为例。

2302_78200121的博客 165

Python学习日记1——python3.8.3安装以及配置环境

1.下载Python3.8.3 进入Python官网,下载python3.8.3安装包 2.安装python 1.选择安装方式——默认方式和自定义方式(我选择的是自定义) 2.选择要安装的软件工具 3.自定义安装路径 4.等待安装结束 5.配置系统变量 添加系统变量 变量名:Python_Home 变量值为安装路径 再将系统变量path添加Python_HOME变量,点击确认保存。 6.命令行运行,输入python -V,打印出对应版本号,则说明安装成功 3.结束 ...

weixin_43957165的博客 1000

【cuda学习日记】8.1 GPU加速库 --cuSPARSE

坐标稀疏矩阵格式(COO)存储了稀疏矩阵中每个非零元素的行坐标、列坐标及其元素值。因此当通过给定的行列坐标对存储在COO格式中的稀疏矩阵进行检索的时候,如果没有匹配值,那么这个位置的值为零. 只有当矩阵中的非零元素不到1/3时,才会节约存储空间。编译: nvcc -o dense2csr cusparse.cu -lcusparse。cuSPARSE是一个线性代数库,内含很多通用的稀疏线性代数函数。把矩阵中的每个元素都存储起来,不管它是否为零。

anbncn1234的博客 763

黑马程序员Java基础加强1-8学习日记

1,IDE(集成开发环境)都支持工程化方式管理一个项目的程序开发过程,一个workspace可以包含多个project,一个workspace保留了eclipse的一套环境选项配置,包括所使用的javac和java命令的版本等等,可以在window->preferences中查看

qiyun2012的专栏 396
上一篇: EXCEL基础操作
下一篇: 1.9学习日记
紫薯粥zzz
博客等级 码龄5年 32粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值