写一个自己的batch函数

学术渣滓在自己改代码的时候遇到了一个大问题。从github上下载下来的代码用的训练集大多数都是minst集。如果想用这个代码训练自己的数据,就需要自己动动手改代码。一切进行的都很顺利,把所有有minst集的地方都改成自己的数据集就可以了。最后我发现了一个大问题,我的batch需要自己写。本来想着抄minst的作业,查了一下参考的minst集是怎么做的,这个居然是TensorFlow自己写好的。自己尝试改了一下,当时忘记自己为啥放弃了,懒人一定是觉得太难改了。不过没关系,CSDN的大佬一定会告诉你怎么做的,经过了一系列的百度,找到了个人认为比较实用的几份参考。

附上大佬的链接(毕竟咱是根据人家的东西修改得到的,抄袭不是好孩子):

Tensorflow将自己的数据分割成batch训练:https://blog.csdn.net/sinat_35821976/article/details/82668555

TensorFlow走过的坑之---数据读取和tf中batch的使用方法:https://www.cnblogs.com/marsggbo/p/10040740.html

不过我用的办法是第一篇博客里面的,主要就是两个函数:

一、tf.slice_input_producer()

作用:作用是从输入的tensor_list按要求抽取一个tensor放入文件名队列

tf.slice_input_producer(tensor_list, num_epochs=None, shuffle=True, seed=None,
                         capacity=32, shared_name=None, name=None)

参数说明:

tensor_list:你自己的输入,格式为tensor的列表;注:[你的数据名字],亲测你要是不加括号会出现bug
num_epohs:设置你想要的训练次数。如果没有给定值,那么将会抽取无数次batch(这会导致你训练过程停不下来),如果给定值,那么在到达次数之后就会报OutOfRange的错误
shuffle:设置是否随机。如果为False,batch是按顺序抽取;如果为True,batch是随机抽取
seed:随机种子
capcity:队列容量的大小,为整数(没闹明白这个是怎么回事)
name:名称(可以不写)

二、tf.train.batch()& tf.train.shuffle_batch()

作用:给你用上一个函数取出来的数据做一个tensor

tf.train.batch([data, label], batch_size=batch_size, capacity=capacity,num_threads=num_thread,allow_smaller_final_batch= True)
tf.train.shuffle_batch([example, label], batch_size=batch_size, capacity=capacity,num_threads=num_thread,allow_smaller_final_batch=True)

参数介绍:

[data,label]:上一个函数的名字
batch_size:batch的大小
capcity:队列的容量(一个队列里允许的最大容量,为整数)
num_threads:线程数,使用多少个线程来控制整个队列。如果num_threads大于1,则batch操作将是非确定性的,输出的batch可能会乱序
allow_smaller_final_batch:这个是当最后的几个样本不够组成一个batch的时候用的参数,如果为True则会重新组成一个batch

三、自己的batch函数

读函数这个事吧,对于学渣来说还是太头疼了。基本上的意思就是如果你想用TensorFlow写自己batch就要用到这两个函数。

def get_Batch(data, batch_size):
    #print(data.shape)测试用的,忽略这一行
    input_queue = tf.train.slice_input_producer([你自己数据的名字噢], num_epochs=这块一定要改好,小编吃过亏, shuffle=True(随机), capacity=64 )
    x_batch = tf.train.batch(input_queue, batch_size=batch_size, num_threads=1, capacity=64, allow_smaller_final_batch=False)
    return x_batch
#引用函数就可以了
f = get_Batch(train_data,batch_size)
#f就是你的训练集

不知道还有什么补充的没有,如果想起来会修改的。如果有说错的地方,大家要指出来啊。

今日的文案收工啦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值