Tensorflow使用笔记(2): 如何构建TFRecords并进行Mini Batch训练

本文介绍了在TensorFlow中使用Mini Batch训练方法来解决内存不足的问题,并详细讲解如何创建TFRecords文件以提高数据处理效率。通过实例展示了如何从pickle转换到TFRecords,以及如何在训练过程中随机读取数据。在实践中,作者发现选择合适的batch_size至关重要,而32x32的输入尺寸在测试集上获得了更好的准确率。
摘要由CSDN通过智能技术生成

引言

  1. 前段时间在做一门课程的期末大作业的时候,用到了TensorFlow,构建了含有两层卷积层的神经网络去做 交通标志的识别,一开始使用 24x24 的图像作为输入(把数据集的图像都resize为24x24)后来感觉应该设计大一点会可靠一点,那就想把输入的图像都改为 64x64 的大小,相应修改了网络一些参数后,run的时候发现出问题了,我还以为是代码没有改好,仔细看一下提示信息:run out of memory 。原来是是内存不足

  2. 那在了解到情况后,就上网找方法,于是乎,找到了个普遍的解决方法:使用mini_batch方法训练,好,那下面就是一些整理网上的资料了

什么是Mini_Batch方法

点这里可以看比较简略的介绍。

先简单介绍一下这三个常见的名词:batch_size ,iteration,epoch

  1. batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
  2. iteration:1个iteration等于使用batchsize个样本训练一次;
  3. epoch:1个epoch等于使用训练集中的全部样本训练一次

总体来说Mini_Batch就是介于SGD(随机梯度下降)和BGD(批梯度下降)之间的一种比较不错的方法,batch_size选择合适了,既能提高训练速度,又能求得一个逼近全局最优解的结果(但是在实际运用中应该要多次修改才能获得合适的size),点这里可以看一些关于怎么选择好batch_size的建议


怎么实现?

那问题来了,怎么在tensorflow中实现Mini_batch训练呢?一开始我的数据集是使用pickle存在硬盘上的

with open( 'images.pkl') as f:
    # training_images 就是存储了很多的使用opencv读取的图像,它们的类型都是np.array
    training_images = pickle.load(f)

那如果是按照顺序读取,每次从取training_images的一部分,然后再取它的下一部分,似乎很容易实

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值