这篇文章主要介绍了Python产生batch数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

产生batch数据

输入data中每个样本可以有多个特征,和一个标签,最好都是numpy.array格式。

datas = [data1, data2, …, dataN ], labels = [label1, label2, …, labelN],

其中data[i] = [feature1, feature2,…featureM], 表示每个样本数据有M个特征。

输入我们方法的数据,all_data = [datas, labels] 。

代码实现

通过索引值来产生batch大小的数据,同时提供是否打乱顺序的选择,根据随机产生数据量范围类的索引值来打乱顺序。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import numpy as np

def batch_generator(all_data , batch_size, shuffle=True):

 """

 :param all_data : all_data整个数据集,包含输入和输出标签

 :param batch_size: batch_size表示每个batch的大小

 :param shuffle: 是否打乱顺序

 :return:

 """

 # 输入all_datas的每一项必须是numpy数组,保证后面能按p所示取值

 all_data = [np.array(d) for d in all_data]

 # 获取样本大小

 data_size = all_data[0].shape[0]

 print("data_size: ", data_size)

 if shuffle:

  # 随机生成打乱的索引

  p = np.random.permutation(data_size)

  # 重新组织数据

  all_data = [d[p] for d in all_data]

 batch_count = 0

 while True:

  # 数据一轮循环(epoch)完成,打乱一次顺序

  if batch_count * batch_size + batch_size > data_size:

   batch_count = 0

   if shuffle:

    p = np.random.permutation(data_size)

    all_data = [d[p] for d in all_data]

  start = batch_count * batch_size

  end = start + batch_size

  batch_count += 1

  yield [d[start: end] for d in all_data]

测试数据

样本数据x和标签y可以分开输入,也可以同时输入。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 输入x表示有23个样本,每个样本有两个特征

# 输出y表示有23个标签,每个标签取值为0或1

x = np.random.random(size=[23, 2])

y = np.random.randint(2, size=[23,1])

count = x.shape[0]

batch_size = 5

epochs = 20

batch_num = count // batch_size

batch_gen = batch_generator([x, y], batch_size)

for i in range(epochs):

 print("##### epoch %s ##### " % i)

 for j in range(batch_num):

  batch_x, batch_y = next(batch_gen)

  print("-----epoch=%s, batch=%s-----" % (i, j))

  print(batch_x, batch_y)

补充:使用tensorflow.data.Dataset构造batch数据集

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import tensorflow as tf

import numpy as np

def _parse_function(x):

 num_list = np.arange(10)

 return num_list

def _from_tensor_slice(x):

 return tf.data.Dataset.from_tensor_slices(x)

softmax_data = tf.data.Dataset.range(1000) # 构造一个队列

softmax_data = softmax_data.map(lambda x:tf.py_func(_parse_function, [x], [tf.int32]))# 将数据进行传入

softmax_data = softmax_data.flat_map(_from_tensor_slice) #将数据进行平铺, 将其变为一维的数据,from_tensor_slice将数据可以输出

softmax_data = softmax_data.batch(1) #构造一个batch的数量

softmax_iter = softmax_data.make_initializable_iterator() # 构造数据迭代器

softmax_element = softmax_iter.get_next() # 获得一个batch的数据

sess = tf.Session()

sess.run(softmax_iter.initializer) # 数据迭代器的初始化操作

print(sess.run(softmax_element)) # 实际获得一个数据

print(sess.run(softmax_data))

以上就是Python产生batch数据的操作的知识,希望能给大家一个参考。

来源:https://www.weidianyuedu.com

Python产生batch数据的操作相关推荐

  1. Python中的数据遍历操作

    1 前言 今天在学习FaceBoxes~ 看到一个语句不是很懂, 就是这里面的zip操作,感觉Python中的数据遍历的语句还是挺多样的,于是想着用笔记记录一下~ 2 Python中的数据遍历操作 2 ...

  2. 利用python对本地数据进行操作

    一.TXT文件操作 1.1 TXT文件介绍 由字符串行组成,每行由EOL (End Of Line) 字符隔开,'\n' 1.2 查看文件数据 该文本文件是一个关于Python语言的介绍 1.3 打开 ...

  3. Python产生batch数据的方法

    参考此文:https://blog.csdn.net/qq_33039859/article/details/79901667 产生batch数据 输入data中每个样本可以有多个特征,和一个标签,最 ...

  4. Python对json数据的操作(香烟示例)

    网上文章很多,也很简单,今天顺便备忘录一下,是想把所有香烟的价格做一个报表,因为订烟网站没有导出报表的功能,所以就只能从他的源码来分析了,查看之后还是json格式,那就更方便了 思路很简单,把香烟的j ...

  5. python更新es数据_python操作es增删改查

    1.查询(search) # 获取案例库信息 @app.route('/get_dcn_cases', methods=['GET', 'POST']) def get_dcn_cases(): # ...

  6. python爬虫写入数据库_Python爬虫数据写入操作

    Python Scrapy爬虫数据写入操作 在我们写完一个爬虫项目,得到了一大堆的数据,为了以后的分析和使用,我们需要把我们得到的数据进行保存.保存数据的方式主要有:保存到数据库,保存到CSV文件,保 ...

  7. python处理json数据 乱码报错_python操作mysql中文显示乱码的解决方法

    本文实例展示了一个脚本python用来转化表配置数据xml并生成相应的解析代码. 但是在中文编码上出现了乱码,现将解决方法分享出来供大家参考. 具体方法如下: 1. Python文件设置编码 utf- ...

  8. python往mysql存入数据_Python操作mysql之插入数据

    之前有写过一篇python查询mysql数据的文章,今天写通过python插入数据到mysql数据库. 相关mysql视频教程推荐:<mysql教程> 先建库,建表,建用户mysql> ...

  9. python处理完数据导入数据库_python操作数据库之批量导入

    python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...

最新文章

  1. LYVC揭秘硅谷核心基金圈投资游戏规则
  2. 美方首次起诉4名俄黑客 其中两人系俄安全局官员
  3. linux怎么退出vim编辑模式_Linux中的vim编辑器使用
  4. ctypes python_Python ctypes 使用总结
  5. 域模型向左走(充血),向右走(贫血)
  6. 双三次插值图像旋转_4K/8K电视中的超分辨率技术到底是啥?让我来告诉你(二-插值篇)...
  7. 保持 Go 模块兼容
  8. INDY流的发送和接收
  9. mysql8 groups关键字
  10. YUI Compressor 进行js/css文件混淆压缩
  11. 河南中睿保险中介系统环境升级配置纪录
  12. 计算机审计方法模板,计算机审计上机实验报告模板.doc
  13. 在蚂蚁金服工作是一种什么体验
  14. Mesh Baker的基本操作与功能演示
  15. 鸿蒙818与A73,荣耀智慧屏正式发布:鸿鹄818智慧芯片+鸿蒙OS,开启未来新视觉
  16. C语言程序设计第六次作业
  17. Gartner2022应用安全测试魔力象限
  18. 2016计算机2级试题,2016年计算机二级考试题及答案
  19. 计算机组成原理-I/O系统
  20. Python--递归初步

热门文章

  1. C#去除长度为零的字符串(\u200B)
  2. Wdf框架之WdfObject状态机(2) 一文再补充
  3. 福禄克FLUKE 190-504/S四通道输入接口示波器
  4. C#遍历ComboBox的内容:
  5. 小米路由器硬盘文件怎么用电脑访问 方法二
  6. 为什么说众期汇场外个股期权代理好?
  7. Android简单音乐播放器
  8. 安卓通讯录管理软件_安卓系统50个你不知道的使用窍门!每个都值得你去收藏!...
  9. 持续在榜的RAFT-Stereo,你确定不来了解吗?
  10. JavaEE_Spring_Spring中的事务声明, 事务隔离和事务传播等