从AlexNet开始(二):利用AlexNet结构学习tensorflow

这篇博客介绍了如何修改AlexNet结构以适应CIFAR-10数据集,详细讲解了Tensorflow的使用,并提供了相关代码。主要内容包括CIFAR-10数据集的介绍、Tensorflow框架的简介、代码实现的细节,以及训练过程中的问题和解决方法。
摘要由CSDN通过智能技术生成

从AlexNet开始(二)

本篇博客将会介绍如何改进AlexNet的网络结构使其应用于CIFAR-10数据集的图像分类,并给出大部分代码,代码使用python语言与tensorflow框架。


CIFAR-10数据集简介

CIFAR数据集是由深度学习三大牛之一的Hinton大佬的两个大弟子Alex Krizhevsky与Ilya Sutskever收集的一个用于普适物体识别的数据集,其中CIFAR是加拿大政府牵头投资的一个先进科学项目研究所。CIFAR数据集共分为两部分,一部分是CIFAR-10,另一部分是CIFAR-100 。

CIFAR-10由60000张32*32分辨率的RGB彩色照片组成,顾名思义,这60000张照片共有10个类别,其中训练集包括50000张图片,测试集包括10000张图片,训练集的图片按类别分好,而测试集的图片顺序是打乱的。

cifar10

CIFAR-100数据集则共有100个分类,其中100个分类包含在10个大类之中,每个大类有10个小类。CIFAR-100中包含的图片同样也是50000张用来训练,10000张用来测试。

具体的CIFAR数据集下载与解压,可以参考Alex做的CIFAR数据集的网站,链接如下:

http://www.cs.toronto.edu/~kriz/cifar.html


Tensorflow简介

Tensorflow是由谷歌开发的,用于机器学习与深度神经网络计算的开源框架。

在Tensorflow中,数据不再是传统的多维数组与变量,程序也不再是由传统的结构组成。Tensorflow采用数据流图的方式来描述程序中的运算,在数据流图中,节点(node)表示对变量的操作与数学计算或是数据的起点终点,线(edge)表示节点之间的输入输出关系,而在线中流动的,就是输送数据的多维数组,也即张量(tensor)。

tensorflow

一旦构建好数据流图,tensors将会在节点之间流动,并异步并行地执行数据流图所定义的运算


Tensorflow代码解释

代码概述

Tensorflow的代码共分为4个文件,分别为

Code Description
cifar10.py 主程序,决定模型训练还是验证
cifar10_input.py 输入程序,包括数据增强、建立队列、打乱顺序等
cifar10_model.py 模型搭建,包括inference, train, loss, validation等函数
cifar10_eval.py 验证程序,验证模型在测试集上的精确度

重点说下cifar10_model.py的内容,输入部分的代码可以参考我之前的博客,如何使用队列输入数据。全部代码会上传到我的github上,地址为

https://github.com/zym1119

cifar10_model.py

本代码中共包含如下函数

Functions Description
inference 模型推测
loss 计算损失函数
train 模型训练
validation 模型验证
variable_on_cpu 创建存储在CPU内存上的变量
variable_with_weight_decay 创建变量并计算L2_loss
add_loss_summaries summary所有的loss并求和

inference函数定义了前向模型,描述了卷积神经网络的结构。在函数中,输入一个batch的图片,以及dropout的keep_prob,最终得到计算出的logits。

def inference(images, keep_prob):
    images = tf.cast(images, tf.float32)

    # conv 1
    # 5*5 convolution with stride 2, channel 32
    with tf.variable_scope('conv1') as scope:
        kernel = variable_with_weight_decay('weights', [5, 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值