【深度学习】对CIFAR-10中的图片进行分类

最近在学习tensorflow框架,昨天做了一个利用tflearn对CIFAR-10中的图片进行分类的问题:

http://c.biancheng.net/view/1930.html

在jupyter notebook上运行代码的时候还是遇到了很多困难。

1.模块重复

KeyError: "Registering two gradient with name 'LSTMBlockCell'!

不太明白是什么意思,Google了也找不出答案。于是我换CPU的kernel重新运行了一遍,没有报错,但是接下来来的训练过程非常慢。。。而且loss一直保持在0也不知道为什么。

然后我查看了一下tensorflow的版本,发现CPU的是1.13.0-rc1,GPU的是2.0.0(什么时候升级了?)于是我在tensorflow-gpu环境下运行:

pip install --user --ignore-installed tensorflow-gpu==1.13.0-rc1

 更改版本以后,确实不报这个错误了。

2.curses缺失

curses is not supported on this machine (please install/reinstall curses for an optimal experience

查了一下这个词的意思,竟然是“诅咒”。。虽然不知道是用来干嘛的,但查一下怎么安装的就是了。需要先在这里找到whl文件下载安装:https://www.lfd.uci.edu/~gohlke/pythonlibs/

一开始下载了35版的,报错信息是不适合该平台,然后又下载了36,成功!

问题一一解决,接下来就是训练模型啦:

3.训练模型

from __future__ import division, print_function, absolute_import
import tflearn
from tflearn.data_utils import shuffle, to_categorical
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.estimator import regression
from tflearn.data_preprocessing import ImagePreprocessing
from tflearn.data_augmentation import ImageAugmentation

# Data loading and pregrocesssing
from tflearn.datasets import cifar10
(X, Y), (X_test, Y_test) = cifar10.load_data()
X, Y = shuffle(X, Y)
Y = to_categorical(Y, 10)
Y_test = to_categorical(Y_test, 10)

# Real-time data preprocessing
img_prep = ImagePreprocessing()
img_prep.add_featurewise_zero_center()
img_prep.add_featurewise_stdnorm()

# Real-time data augmentation
img_aug = ImageAugmentation()
img_aug.add_random_flip_leftright()
img_aug.add_random_rotation(max_angle = 25.)

# Convolutional network building
network = input_data(shape = [None, 32, 32, 3],
                    data_preprocessing = img_prep,
                    data_augmentation = img_aug)
network = conv_2d(network, 32, 3, activation = 'relu')
network = max_pool_2d(network, 2)
network = conv_2d(network, 64, 3, activation = 'relu')
network = conv_2d(network, 64, 3, activation = 'relu')
network = max_pool_2d(network, 2)
networ = fully_connected(network, 512, activation = 'relu')
network = dropout(network, 0.5)
network = fully_connected(network, 10, activation = 'softmax')
network = regression(network, optimizer = 'adam', loss = 'categorical_crossentropy',
                    learning_rate = 0.001)

#Train using classifier
model = tflearn.DNN(network, tensorboard_verbose = 0)
model.fit(X, Y, n_epoch = 50, shuffle = True, validation_set = (X_test, Y_test),
         show_metric = True, batch_size = 96, run_id = 'cifar10_cnn')

结果:

这样就Train好啦!哎,在cpu上跑过一遍才知道GPU有多快。

4.预测

教程上只写了怎么训练模型,我想试一下分类的效果如何。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值