[TOC](Tensorflow + Keras + Kaggle)
序言
事实上,我也是刚刚接触Python Deep Learning and Neural Networks,作为一个Rookie,我觉的我有必要将自己的所有流程和心得体会以这样的方式记录下来。正所谓“是故学然后知不足,教然后知困。知不足然后能自反也,知困然后能自强也。故曰:‘教学相长’也。”
本人环境安装的配置为:Windows10 + conda 4.10.3(配置了虚拟环境) + GPU + 谷歌必备插件(狗头)
需要在Jupyter Notebook 中完成代码的实现
因为本人水平的原因,可能无法完全了解每一行代码的含义和作用,所以这个教程是为那些不急于理论学习,先要跑通流程的Rookie准备的。如果有大牛可以提出建议和指出错误,在下感激不尽。
我在跑流程的时候遇到的很多的Bug(很多),有网上解决的,也有网上没有解决的。 我这里有一个视频的链接.,虽然繁琐,但是代码还是敲得明明白白的。大家要是有问题的话,可以看这个视频找到报错的原因。
Tensorflow的环境安装(虚拟环境下)
因为官方推荐使用Tensorflow2.0 所以以下都是准对Tensor flow2.0的教程
在系统上安装 Python 开发环境(本过程并非重点,我附上相应的代码和最终结果)
pip3 --version
上图就是有完整的Python环境的标志,如果你满足了上图的条件,那么恭喜你已经完成了第一步。
创建虚拟环境前
pip install virtualenv --upgrade
conda create -n PC_2 python=3.7 anaconda
如果没有报错,那么输入完成之后就意味着创建了一个名为PC_2的虚拟环境,后面的python版本就根据自己的情况和需要进行选择
因为本次的主角为Tensor flow 所以我们也可以针对的创建一个名为Tensorflow的虚拟环境,因为如果这方面的环境被我们玩崩了,那么找到这个虚拟环境之后,直接暴力删除就可以推倒重来,不必担心把系统文件删除。
conda create -n tensorflowenv python=3.7 anaconda
跟着cmd的指示走,就可以成功创建了一个名为 tensorflowenv 的虚拟环境,以这种方式创建的好处是,它和Anaconda可以很好的联动,而并非只是一个单纯的文件夹环境
- 好处如下
- 我们在开始菜单中的Anaconda一栏中会发现我们新创建的虚拟环境
- 可以在Anaconda的用户界面里直接点击切换
- 安装Tenwsorflow和Keras
pip install tensorflow # 安装tensorflow
pip install keras #安装Keras
activate tensorflowenv #从base下启动虚拟环境
deactivate #关闭虚拟环境
import tensorflow as tf
print(tf.__version__)
import keras
print(keras.__version__) #测试Tensorflow 和 Keras的代码
- 如果你已经到达了这里那么就代表我们要开始我们的重头戏了
配置jupyter notebook 和 从Kaggle上下载数据集(需要来自西方的神秘力量)
- 然后右键从文件夹中打开
- 打开 属性
把这里最后的那个路径改为自己存放文件的路径即可(例如我的是E:\ForKeras)
链接: Kaggle.(这个网站有大量的数据集,但是请合理每一个数据集,毕竟数据无价)
本次的使用的数据集链接: Dogs&Cats.
如果无法借助这种力量,那么我把这次的文件上传在百度云里
链接:https://pan.baidu.com/s/1fGw3siDZDIVOAGH0Mt76mw
提取码:6dyj
我们下载好文件之后,里面会是这样子的排列
其中test_set是我们的测试集,training_set是我们的训练集。
开始准备训练数据集
import os ##使用os
base_dir = 'E:\ForKeras\Blog' #自己的数据集存放的位置
train_dir = os.path.join(base_dir,'training_set', 'training_set')
validation_dir = os.path.join(base_dir,'test_set', 'test_set') ##这个数据集有两层文件夹 一定要注意
train_cats_dir = os.path.join(train_dir, 'cats') ## 类别的命名 本别为cats & dogs
train_dogs_dir = os.path.join(train_dir, 'dogs')
test_cats_dir = os.path.join(validation_dir, 'cats') ## 类别的命名 本别为cats & dogs
test_dogs_dir = os.path.join(validation_dir, 'dogs')
train_cat_fnames = os.listdir( train_cats_dir )
train_dog_fnames = os.listdir( train_dogs_dir )
print(train_cat_fnames[:20])
print(train_dog_fnames[:20]) #看看训练集导入成功没有
如果导入成功则会显示不同类别数据集内容的文件名称
print('total training cat images :', len(os.listdir(train_cats_dir)))
print('total training dog images :', len(os.listdir(train_dogs_dir)))#查看训练集中图像的个数
print('total test cat images :', len(os.listdir(test_cats_dir)))
print('total test dog images :', len(os.listdir(test_dogs_dir)))#查看验证集中图像的个数
个数显示如下
%matplotlib inline
import matplotlib.image