IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 经典论文AlexNet -> 正文阅读

[人工智能]经典论文AlexNet


#pic_center =400x
系列文章:



研究背景

CV数据集:

Mnist 图片大小28x28; 类别 10; 训练数据 50000; 测试数据 10000; 图片格式 Gray

Cifar-10 图片大小32x32; 类别 10; 训练数据50000; 测试数据10000; 图片 RGB
ILSVRC-2012图片大小100x100 ; 类别 1000; 训练数据50000; 测试数据10000; 图片 RGB
ImageNet数据集包含21841类别, 14197122张图片,ILSVR-2012的数据集是从ImageNet中获取的

研究意义

实现端到端:特征工程提取和分类集成一体。之前都是特征工程提取和分类是分开进行。
计算机视觉应用落地,如人脸识别,车辆检测等

pytorch 有专门的颜色扰动

AlexNet 架构

采用Relu激活

Relu优点

  1. 使网络训练更快
  2. 防止梯度消失/弥散
  3. 使网络具有稀疏性

LRU

Local Response Normalization
局部响应标准化:可以提高AlexNet泛化能力,该ieda受真实神经元侧抑制(lateral inhibition) 启发
侧抑制:当细胞分化为不同是,他会对周围细胞产生抑制信号,阻止它们襄相同方向分化,最终表现为细胞命运的不同
在这里插入图片描述
α , β , k , n 都是超参数 \alpha, \beta,k,n都是超参数 α,β,k,n都是超参数
在 i 的n/2 邻域半径内,半径不得超过边界 ( i ? n / 2 < 0 , i + n / 2 > = N ) , (i-n/2<0, i+n/2>=N), (i?n/2<0,i+n/2>=N)
统计这些神经元平方和,对应位置出去平方和。如果某个神经元的值特别大,邻域内其他的神经元就会趋向0

Overlapping Pooling

相对于传统的no-overlapping pooling,采用Overlapping Pooling不仅可以提升预测精度,同时一定程度上可以减缓过拟合。

相比于正常池化(步长s=2,窗口z=2) 重叠池化(步长s=2,窗口z=3) 可以减少top-1, top-5分别为0.4% 和0.3%;重叠池化可以避免过拟合。
在这里插入图片描述

总体体系结构

在这里插入图片描述

在这里插入图片描述

减少过拟合

数据增强

两种数据增强:
两种数据增强方式

第一种:图像转换与水平映射。
在训练数据集上:从图像256x256中随机抽取224x224像素大小进行训练,训练数据集增长了2048,这样得到的图像是高度相关的

在测试数据集上:从源图像的上下左右+中间采取5张224x224大小的图片, 进行水平翻转(新的5张),最终得到10张图像
在这里插入图片描述

第二种方式就是PCA
PCA
PCA(主成分分析方法)

Dropout

多个不同模型结合起来能减小测试误差但是训练时间太长了。有一种非常有效的模型结合方式并且训练时间是原来的2倍。新的技术dropout:一0.5概率使得隐藏层的输出重置为0。重置为0的神经元不会进行前向传播、反向传播。每次给定输入,神经网络会对不同的体系结构进行采样,但是这些体系结构是共享权重的

在测试阶段,所有神经元的输出需要乘0.5 训练阶段使用dropout使得一半的输出为0,测试阶段 需要预测的值的几何平均值减小一半即乘0.5
使用dropout收敛所需的迭代次数是之前的两倍

AlexNet 论文深度讲解

代码

路径拼接

import os
#os.path.dirname(__file__)返回的是.py文件的目录
path1 = os.path.dirname(__file__)
print('path1',path1)
# path1 E:\code\deeplea\pytorchlearn\ForTest

#os.path.abspath(__file__)返回的是.py文件的绝对路径(完整路径)
path2 = os.path.abspath(__file__)
print('path2',path2)
# path2 E:\code\deeplea\pytorchlearn\ForTest\test.py

#组合使用
path3 = os.path.dirname(os.path.abspath(__file__))
print('path3',path3)
# path3 E:\code\deeplea\pytorchlearn\ForTest

#os.path.join()拼接路径
path4 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test.py')
print('path4',path4)
# path4 E:\code\deeplea\pytorchlearn\ForTest\test.py
path_state_dict = os.path.join(BASE_DIR, "..", "data", "alexnet-owt-4df8aa71.pth")
    print(BASE_DIR)
    # E:\code\deeplea\pytorchlearn\learn\typepaper\A_alexnet\src
    print(path_state_dict)
    # E:\code\deeplea\pytorchlearn\learn\typepaper\A_alexnet\src\..\data\alexnet - owt - 4df8aa71.pth

图像处理问题

  • Resize 把给定的图片resize到给定大小
  • CenterCrop在图片的中间区域进行裁剪
  • ToTensor:convert a PIL image to tensor (HWC) in range [0,255] to a torch.Tensor(CHW) in the range [0.0,1.0]
  • Normalize
norm_mean = [0.485, 0.456, 0.406]
    norm_std = [0.229, 0.224, 0.225]
    inference_transform = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop((224, 224)),

        # [0, 255]/255 => [0,1]
        transforms.ToTensor(),
        transforms.Normalize(norm_mean, norm_std),
    ])

transforms.Compose()函数

 # path --> img
    img_rgb = Image.open(path_img).convert('RGB')

    # img --> tensor
    img_tensor = img_transform(img_rgb, inference_transform)
    img_tensor.unsqueeze_(0)        # chw --> bchw
    img_tensor = img_tensor.to(device)

img_tensor.unsqueeze_(0) 在0这个位置增加一维

def img_transform(img_rgb, transform=None):
    """
    将数据转换为模型读取的形式
    :param img_rgb: PIL Image
    :param transform: torchvision.transform
    :return: tensor
    """

    if transform is None:
        raise ValueError("找不到transform!必须有transform对img进行处理")

    img_t = transform(img_rgb)
    return img_t

加载模型

Pytorch搭建简单神经网络(三)——快速搭建、保存与提取

pred_int.cpu().numpy() 在GPU上的tensor格式数据不能直接转换为numpy, 需要先转换为cpu float-tensor随后转换为numpy格式。 numpy不能读取CUDA tensor格式数据,需要将它转换为CPU tensor
.detach().cpu().numpy()的作用

torch.max( ) 按照维度返回最大值及对应的索引

a = np.array([[11,22],[33,44]])
a = torch.tensor(a)
out_value,out_index = torch.max(a, dim=1)
print(out_value) #tensor([22, 44], dtype=torch.int32)
print( out_index) #tensor([1, 1])

torch.max()语法、用法以及例子

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:52:59  更:2022-09-30 00:53:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:40:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码