python3深度学习---第五章学习笔记:tensorflow卷积神经网络Conv2D

因为第5章的代码较多,且零散,所以对代码进行了一些调整和归纳,将零散的代码归为函数使用

第一节MNIST的卷积网络实现很简单,因为数据集已经集成在keras里了,而在第二节准备数据集的时候遇到了点小问题,首先书中提供的链接已经不存在了,毕竟是2年前的书了。所以就自己在kaggle上找数据集,而我下载下来的数据集又和书中的不太一样,1、目录结构不一样,2、文件名不规范,而且书中处理数据集的方法有点像命令式的方式,感觉较繁琐,所以自己写了两个函数来处理,这样可以帮助更好的理清思路,建议用GPU跑.   我的是gtx9604G显卡,跑50个epoch需要21分钟左右,虽然不快,但也比CPU好太多,大概是cpu的25倍

 

import os,shutil
#tensorflow本身已集成keras,但也可以额外安装,此步是为了兼容两种情况

try:         
    from keras import layers
    from keras import models
    from keras.preprocessing.image import ImageDataGenerator
    from keras import optimizers
except Exception as e:
    import tensorflow as tf
    layers = tf.keras.layers
    models = tf.keras.models
    ImageDataGenerator = tf.keras.preprocessing.image.ImageDataGenerator
    optimizers = tf.keras.optimizers

import matplotlib.pyplot as plt
 

original_dataset_dir = r'D:\Work\datasets\dogs_vs_cats\train'#原始数据集解压目录
base_dir = r'D:\Work\datasets\cats_and_dogs_small'  #提取的小批量图片的保存目录
def mk_dir(*path):
    try:
        full_path = ''
        for sub_path in path:
            full_path = os.path.join(full_path, sub_path )
        os.makedirs( full_path )#递归创建多层文件夹
        return full_path
    except Exception as e:
        print('创建失败,检查文件夹是否已存在')
        print( full_path )
        return full_path
def copy_img( train_validation_test, dogs_or_cats,how_num ):
    '''
    train_validation_test字符串 ,表示要建立的是训练、验证或者是测试目录
    dogs_or_cats字符串,意思为是狗还是猫
    how_num元组,表示拷贝量从多少到多少,例如0,1000
    '''
    filename = ''.join([dogs_or_cats[:-1] , '.{}.jpg']) #dogs_or_cats[:-1]因为原始文件名是dog.25.jpg这样的,所以要先删除dogs、cats后面的‘s’
    fnames = [ filename.format( str(i) ) for i in range( how_num[0],how_num[1] 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值