Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度学习实战篇之 ( 十三) -- TensorFlow之AlexNet

深度学习实战篇之 ( 十三) -- TensorFlow之AlexNet

作者头像
用户5410712
发布于 2022-06-01 12:14:03
发布于 2022-06-01 12:14:03
31800
代码可运行
举报
文章被收录于专栏:居士说AI居士说AI
运行总次数:0
代码可运行

科普知识

在实践中,由于数据集不够大,很少有人从头开始训练网络。常见的做法是使用预训练的网络(例如在ImageNet上训练的分类1000类的网络)来重新fine-tuning(也叫微调),或者当做特征提取器。

前言

粉丝老铁们,好久不见,不知道大家的深度学习到了什么程度呢?按照居士之家现在的规划是,两周分享一次文章,理论篇和实战篇交叉分享,本次分享,我们紧跟上次文章深度学习理论篇之 ( 十四) -- AlexNet之更上一楼来进行TensorFlow实战,希望大家仔细弄懂上一期文章才好进入今天的内容哦。

AlexNet之TensorFlow实战

1.数据准备

与上期文章不一样,我们换个数据集,本次采用五种类别的鲜花作为数据集,同样包含两个子集:训练集和验证集。

怎么样,鲜花好看吧!

另外,值得注意的是,由于是五分类,因此,我们的数据读取代码部分有了一点改变:

其余的代码跟第一次项目的一样的哦!

2.网络结构

# AlexNet 网络结构

# 输入:3*227*2227 代表三通道的彩色图像输入,图像大小为227*227

# 卷积层1:卷积核大小为11*11 卷积核个数:96,步长:4

# 最大池化1:采样区域:3*3, 步长:默认为1

# 卷积层2:积核大小为5*5 ,卷积核个数:256, 步长:1

# 最大池化2:采样区域:3*3, 步长:默认为1

# 卷积层3:积核大小为3*3 ,卷积核个数:384, 步长:1,采用padding。

# 卷积层4:积核大小为3*3 ,卷积核个数:384, 步长:1,采用padding。

# 卷积层5:积核大小为3*3 ,卷积核个数:256, 步长:1,采用padding。(在理论篇文章中遗漏了这一层,切记,注意)

# 最大池化3:采样区域:3*3, 步长:默认为1

# 全连接层1:输出84

# 全连接层2:输出5(五分类)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def inference(images, batch_size, n_classes,drop_rate):
    # 卷积层1:卷积核大小为11*11 卷积核个数:96,步长:4
    conv1 = Conv_layer(names = 'conv1_scope', input = images , w_shape = [11, 11, 3, 96], b_shape = [96], strid = [4, 4], is_padding = False)
    print("---------conv1:{}".format(conv1))
    # 最大池化1:采样区域:3*3, 步长:默认为1
    down_sample1 = Avg_pool_lrn(names = 'avg_pooling1', input = conv1 , ksize = [1, 2, 2, 1], is_lrn = False)
    print("---------down_sample1:{}".format(down_sample1))
    # 卷积层2:积核大小为5*5 ,卷积核个数:256, 步长:1
    conv2 = Conv_layer(names = 'conv2_scope', input = down_sample1 , w_shape = [5, 5, 96, 256], b_shape = [256], strid = [1, 1], is_padding = False)
    # 最大池化2:采样区域:3*3, 步长:默认为1
    down_sample2 = Avg_pool_lrn(names = 'avg_pooling2', input = conv2 , ksize = [1, 3, 3, 1], is_lrn = False)
    # 卷积层3:积核大小为3*3 ,卷积核个数:384, 步长:1,采用padding。
    conv3 = Conv_layer(names = 'conv3_scope', input = down_sample2 , w_shape = [3, 3, 256, 384], b_shape = [384], strid = [1, 1], is_padding = True)
    # 卷积层4:积核大小为3*3 ,卷积核个数:384, 步长:1,采用padding。
    conv4 = Conv_layer(names = 'conv4_scope', input = conv3 , w_shape = [3, 3, 384, 384], b_shape = [384], strid = [1, 1], is_padding = True)
    # 卷积层5:积核大小为3*3 ,卷积核个数:256, 步长:1,采用padding。(在理论篇文章中遗漏了这一层,切记,注意)
    conv5 = Conv_layer(names = 'conv4_scope', input = conv3 , w_shape = [3, 3, 384, 256], b_shape = [256], strid = [1, 1], is_padding = True)
    reshape = tf.reshape(conv3, shape=[batch_size, -1])
    dim = reshape.get_shape()[1].value
    # 全连接层1:输出84
    local_1 = local_layer(names = 'local1_scope', input = reshape , w_shape = [dim, 84], b_shape = [84])
     # 全连接层2:输出5
    local_2 = local_layer(names = 'local2_scope', input = local_1 , w_shape = [84, 5], b_shape = [5])
    print(local_2.shape)

    return local_2

3.训练过程

可能是数据集太小的原因,这个网络很快就拟合了,后期我们将会采用更大的数据集进行训练。

结语

今天的分享就到此结束了,网络层的构建也比较简单,比较注意的是最后的三个卷积层的输出和其输入的shape是一样的,老铁们可以自行print看看结果哦,此外由于数据集的类别发生了变化,因此相应的数据处理部分和网络的输出部分也做了改变,同时,不知道细心的老铁有没有发现,数据集处理部分似乎有点不合理,我是按照每个类别单独进行循环读取数据,那万一数据分类过多怎么办呢?因此,后期我们将会采用新的一种数据管道的读取方式,高效简洁,一起期待吧!

最后,我们的实战代码希望真心学习的你们一定下去自己实践哦,自己按照第一次项目的代码一步步改进哦,代码调试不通,可以私聊小编,通过自己一步步查找错误进行修正才是真正的学到知识哦!

编辑:玥怡居士|审核:小圈圈居士

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
linux学习--未整理命令
find /path -type f -exec rm -f {} ; 删除指定文件
solate
2019/07/19
1K0
linux常见的压缩指令
xzcat,xz -d,xzmore,xzgrep,xzless和等级压缩同gzip用法相同.
小柒吃地瓜
2020/04/23
5.5K0
19个Linux备份压缩命令
文 | 云豆 来源 | 菜鸟教程 云豆贴心提醒,本文阅读时间5分钟,文末有秘密! Linux ar命令 Linux ar命令用于建立或修改备存文件,或是从备存文件中抽取文件。 ar可让您集合许
小小科
2018/05/04
2K0
19个Linux备份压缩命令
Linux服务器备份工具(tar,cpio,dump)
1、备份前因考虑的因素 ● 可移植性(即在Red Hat Linux系统下执行的备份在另外一个系统上恢复的能力)。 ● 是否自动备份。 ● 执行备份的周期。 ● 需要把归档的备份保存多长时间。 ● 用户界面的友好性(决定是否需要选择基于GUI界面的工具还是基于文本的)。 ● 是否需要使用压缩技术、直接复制或者加密技术。 ● 备份介质(需要从价格、性能、存储能力上考虑)。 ● 是否远程备份或网络备份。 ● 是保存一个文件、一个子目录还是整个系统。
星哥玩云
2022/07/03
1.8K0
ORACLE备份恢复
备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本
全栈程序员站长
2022/09/13
2.8K0
ORACLE备份恢复
Linux 备份与恢复
实体机无法做快照,如果系统出现异常或者数据损坏,后果严重,要重做系统, 还会造成数据丢失。所以我们可以使用备份和恢复技术
用户9615083
2022/12/25
5.4K0
Linux 备份与恢复
【Linux】备份与恢复
-c : 创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
兮动人
2022/02/27
6K0
97 条 Linux 运维工程师常用命令总结
作者:jeanheo 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的详细信息 -c 根据ctime排序显示 -t 根据文件修改时间排序 ---color[=WHEN] 用色彩辨别文件类型 WHEN 可以是'never'、'always'或'auto'其中之一 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅
小小科
2018/05/04
3.6K0
HAWQ技术解析(十五) —— 备份恢复
一、为什么还需要备份         HAWQ作为一个数据库管理系统,备份与恢复是其必备功能之一。HAWQ的用户数据存储在HDFS上,系统表存储在master节点主机本地。HDFS上的每个数据块缺省自
用户1148526
2018/01/03
2.2K0
HAWQ技术解析(十五) —— 备份恢复
linux下打包命令_linux常用命令全集
大家好,又见面了,我是你们的朋友全栈君。 linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相
全栈程序员站长
2022/09/23
1.6K0
生信入门必须掌握的 30 个 Linux 命令
修改工作目录,cd 和 ls 应该是使用最多的两个命令,尤其是对于 Linux 目录结构不熟的用户。
章鱼猫先生
2021/10/15
2.7K1
从零开始学PostgreSQL (六): 备份和恢复
PostgreSQL 提供了多种备份和恢复策略,旨在满足不同规模和需求的数据库环境。以下是 PostgreSQL 备份和恢复的主要方法概览:
DBA实战
2024/09/06
6530
从零开始学PostgreSQL (六): 备份和恢复
Linux私房菜:打包、压缩和备份
目前常见的Linux压缩命令包括有gzip、bzip2和最新的xz,下表是一些常见的压缩文件扩展名及对应指令关系:
happyJared
2018/10/25
1.6K0
Linux私房菜:打包、压缩和备份
PostgreSQL备份恢复实现
本文主要介绍pg_dump、pg_dumpall、copy、pg_basebackup的使用。
数据和云
2021/09/22
5.6K0
PostgreSQL备份恢复实现
PostgreSQL 备份与恢复(第一章)
PostgreSQL官方文档指定了以下三种备份方法,详见:https://www.postgresql.org/docs/current/backup.html
DB之路
2021/07/14
10K0
linux卸载nps,Linux NPS服务部署
yum install nfs-utils #如果检查的结果是没有安装,则使用该命令安装
全栈程序员站长
2022/08/15
1.4K0
数据库PostrageSQL-备份和恢复
由于包含着有价值的数据,PostgreSQL数据库应当被定期地备份。虽然过程相当简单,但清晰地理解其底层技术和假设是非常重要的。 有三种不同的基本方法来备份PostgreSQL数据:
cwl_java
2020/12/22
2.3K0
快速备份恢复工具mydumper/myloader
一 前言 大家对于MySQL的逻辑备份工具mysqldump应该都比较了解,本文介绍一款由MySQL ,Facebook 等公司的开发维护另外一套逻辑备份恢复工具---mydumper/myloader。 目前已经开发到0.9.1 版本。 mydumper 具有如下特性 1 支持多线程导出数据,速度比mysqldump快,生产上150G 导出到本地SSD磁盘40min 。 2 支持一致性备份,使用FTWRL(FLUSH TABLES WITH READ LOCK)会阻塞DML语句,保证备份数据的一致性。 3 支持将导出文件压缩,节约空间。 4 支持多线程恢复。 5 支持以守护进程模式工作,定时快照和连续二进制日志 6 支持按照指定大小将备份文件切割。 7 数据与建表语句分离。
用户1278550
2018/08/09
5.4K0
Linux快速入门02-文件系统管理
继续进入Linux文件系统的学习,加油,早日突破MS压在自己身上的那道束缚。 文件属性基本概念:文件所有者,文件组,其他人。 对上图来说,-rw-r—r—表示文件的权限,1表示连接数,两个root分
用户1216676
2018/01/24
1.3K0
Linux快速入门02-文件系统管理
GreenPlum备份和恢复工具之gpbackup和gprestore
Greenplum数据库支持并行和非并行方法来备份和还原数据库。并行操作可扩展,而与系统中段的数量无关,因为段主机各自将数据同时写入本地磁盘存储中。对于非并行备份和还原操作,必须通过网络将数据从网段发送到主服务器,主服务器将所有数据写入其存储中。除了将I/O限制在一台主机之外,非并行备份还要求主服务器具有足够的本地磁盘存储空间来存储整个数据库。
AiDBA宝典
2023/11/06
2.1K1
GreenPlum备份和恢复工具之gpbackup和gprestore
相关推荐
linux学习--未整理命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验