【Tensorflow】用自己的数据创建batch训练网络

用TensorFlow搭建神经网络识别数字图片 导入TensorFlow和数字图片 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data 读取数字图片数据,指定每次训练使用的数据集大小(batch_size)以及每次训练批次(n_batch) mnist=input_data.read_data_sets('MNIST_data',... 阅读详情

1. tf.slice_input_producer()

首先需要讲解两个函数,第一个函数是 :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的列表;一般为[data, label],即由特征和标签组成的数据集

  • tensor_list 这个就是输入,格式为tensor的列表;一般为[data, label],即由特征和标签组成的数据集

  • num_epochs 这个是你抽取batch的次数,如果没有给定值,那么将会抽取无数次batch(这会导致你训练过程停不下来),如果给定值,那么在到达次数之后就会报OutOfRange的错误

  • shuffle 是否随机打乱,如果为False,batch是按顺序抽取;如果为True,batch是随机抽取

  • seed 随机种子

  • capcity 队列容量的大小,为整数

  • name 名称

2. tf.train.batch()& tf.train.shuffle_batch()

第二个函数为:tf.train.batch(),tf.train.shuffle_batch(),这个函数的作用为生成大小为batch_size的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 线程数,使用多少个线程来控制整个队列
  • allow_smaller_final_batch 这个是当最后的几个样本不够组成一个batch的时候用的参数,如果为True则会重新组成一个batch

下面给出生成batch的函数,由上面两个函数组成:

def get_Batch(data, label, batch_size):
    print(data.shape, label.shape)
    input_queue = tf.train.slice_input_producer([data, label], num_epochs=1, shuffle=True, capacity=32 ) 
    x_batch, y_batch = tf.train.batch(input_queue, batch_size=batch_size, num_threads=1, capacity=32, allow_smaller_final_batch=False)
    return x_batch, y_batch

3.batch的使用方法

生成batch只完成了一半,后面的使用方法也比较复杂,直接上一个完整的程序来讲解会方便理解一些:下面代码构建了一个单层感知机,对数据进行分类,主要看一下训练过程中如何使用生成好了的batch,具体细节都写在注释里面了。

import tensorflow as tf
import scipy.io as sio
import numpy as np
 
 
def get_Batch(data, label, batch_size):
    print(data.shape, label.shape)
    input_queue = tf.train.slice_input_producer([data, label], num_epochs=1, shuffle=True, capacity=32 ) 
    x_batch, y_batch = tf.train.batch(input_queue, batch_size=batch_size, num_threads=1, capacity=32, allow_smaller_final_batch=False)
    return x_batch, y_batch
 
 
data = sio.loadmat('data.mat')
train_x = data['train_x']
train_y = data['train_y']
test_x = data['test_x']
test_y = data['test_y']
 
x = tf.placeholder(tf.float32, [None, 10])
y = tf.placeholder(tf.float32, [None, 2])
 
w = tf.Variable(tf.truncated_normal([10, 2], stddev=0.1))
b = tf.Variable(tf.truncated_normal([2], stddev=0.1))
pred = tf.nn.softmax(tf.matmul(x, w) + b)
 
loss = tf.reduce_mean(-tf.reduce_sum(y * tf.log(pred), reduction_indices=[1]))
optimizer = tf.train.AdamOptimizer(2e-5).minimize(loss)
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(pred, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32), name='evaluation')
 
x_batch, y_batch = get_Batch(train_x, train_y, 1000)
# 训练
with tf.Session() as sess:
    #初始化参数
    sess.run(tf.global_variables_initializer())
    sess.run(tf.local_variables_initializer())
    # 开启协调器
    coord = tf.train.Coordinator()
    # 使用start_queue_runners 启动队列填充
    threads = tf.train.start_queue_runners(sess, coord)
    epoch = 0
    try:
        while not coord.should_stop():
            # 获取训练用的每一个batch中batch_size个样本和标签
            data, label = sess.run([x_batch, y_batch])
            sess.run(optimizer, feed_dict={x: data, y: label})
            train_accuracy = accuracy.eval({x: data, y: label})
            test_accuracy = accuracy.eval({x: test_x, y: test_y})
            print("Epoch %d, Training accuracy %g, Testing accuracy %g" % (epoch, train_accuracy, test_accuracy))
            epoch = epoch + 1
    except tf.errors.OutOfRangeError:  # num_epochs 次数用完会抛出此异常
        print("---Train end---")
    finally:
        # 协调器coord发出所有线程终止信号
        coord.request_stop()
        print('---Programm end---')
    coord.join(threads)  # 把开启的线程加入主线程,等待threads结束
 

总共训练的次数为(样本数目/batch_size)*num_epochs

参考:https://blog.youkuaiyun.com/sinat_35821976/article/details/82668555

TensorFlow学习笔记(7) 多线程输入数据处理框架 目录 多线程输入数据处理框架 队列与多线程 输入文件队列 组合训练数据 输入数据处理框架 多线程输入数据处理框架 为了避免图像预处理成为神经网络模型训练效率的瓶颈,TF提供了一套多线程处理输入数据的框架。经典的输入数据处理流程为如图所示。 队列与多线程 在tensorflow中,队列不仅是一种数据结构,更提供了多线程机制,队列也是TF中多线程输入数据处理框架的基础。比如... 阅读详情

相关推荐

高阶玩法——Dify生成的数据自动写入mysql数据库

采用自定义工具方式,利用 python编写一个服务sql_save_post,将接收到的内容写入指定数据库的表中,并为该服务撰写一个 OpenAPI 的 schema。配置工作流:我们以写入天气预报为例,在生成天气预报内容后,连接自定义工具“sql_save_post”,将所需的字段配置完成后,实现将生成的内容自动写入mysql数据库中。编写OpenAPI的schema:在dify平台的工具栏目,创建自定义工具,输入工具名称“sql_save_post”。工具:sql_save_post;

qq_44493378的博客 8539

TensorFlow学习2:使用自己的数据批量训练网络

使用自己的数据训练网络时,需要用到两个函数:tf.train.slice_input_producer、tf.train.batch和两个类tf.train.Coordinator和tf.QueueRunner。 参考博客:tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数和tensorflow中协调器 tf.train.Co...

qq_16452745的博客 1237

Numpy快速入门(np)!看这一篇就够了

Numpy快速入门(np)!看这一篇就够了

weixin_74009895的博客 2679

tensorflow用自己的数据创建batch

使用自己的数据创建batch 下面以一个例子说明: data = np.array([x for x in range(1, 101)]).reshape(10, 10) label = np.array([x for x in range(1, 11)]).reshape(10, 1) 将data代表的矩阵作为输入的数据,其中每一行作为一个样例,每一列作为一个特征,这里要说明的是:...

qq_40317897的博客 3345

微信支付V2,jsapi支付拉起收银台报错:调用支付JSAPI缺少参数:total_fee

拉起收银台报错

m0_54355172的博客 3872

kali2020.2安装出现的问题并附详细解决办法

kali2020.2的安装

weixin_48776804的博客 3047

tensorflow 利用tf.dataset.Dataset构建数据batch

tf.dataset.Dataset用过多次了,一直懒得记录,今天来更新下 定义阶段 import tensorflow as tf import numpy as np ... def image_read(imnames,labs = None): print(imnames) images = tf.read_file('./reptile/combine_tota...

ShenWeiKKX的博客 1310

Kaggle | 总奖池超200万美金的数学竞赛AIMO2冠军方案

••••结论1:通过结合高质量大规模数据集、工具集成推理和生成式选择方法,可以构建在挑战性数学问题上达到最先进水平的语言模型。本文的方法在 AIMO-2 竞赛中的胜利以及在多个数学基准上的 SOTA 结果验证了这一策略的有效性。结论2:发布 OpenMathReasoning 数据集、OpenMath-Nemotron 模型和代码是社区的宝贵财富。

hxshine的博客 1194

Tensorflow训练中产生batch

import numpy as np import time inputs = np.arange(0,784).reshape(-1,7,7) targets = np.arange(0,784).reshape(-1,7,7) # 仅有数据时 def get_batchs(inputs=None, batch_size=None, shuffle=False): indices = ...

Jak的博客 1240

简单的服务器取证

记一次入门服务器取证——药品直销网,涵盖旧版本宝塔、静态IP的配置更改、代码的理解

m0_74559567的博客 3756

Python之aaindex包语法、参数和实际应用案例

`aaindex`是一个专为生物信息学设计的Python包,主要用于处理氨基酸指数(AAindex)数据库。该数据库收集了各种氨基酸的物理化学性质和统计特性,涵盖疏水性、电荷、体积等500多种特性。`aaindex`包提供了便捷的接口,让用户能够快速访问这些数据,并应用于蛋白质序列分析、结构预测、功能推断等领域。

王国平的博客 1036

tensorflow训练的batch制作方式

对于数据量较小而言,可能一般选择直接将数据加载进内存,然后再分batch输入网络进行训练(tip:使用这种方法时,结合yield 使用更为简洁,大家自己尝试一下吧,我就不赘述了)。但是,如果数据量较大,这样的方法就不适用了,因为太耗内存,所以这时最好使用tensorflow提供的队列queue,也就是第二种方法 从文件读取数据。对于一些特定的读取,比如csv文件格式,官网有相关的描述,在这儿我介绍

Touch_Dream的博客 2628

OpenClaw 技术架构解析-网关层(上)

OpenClaw 网关层是架构核心中枢,承接Channel层消息,串联消息路由器、会话状态管理器等五大组件,负责消息分发、会话管理、状态统筹、上下文维护等关键职责,是连接Channel层与AI执行引擎的核心桥梁,保障多渠道交互稳定、有序运行。

wend的博客 711

TensorFlow 组合训练数据(batching)

在之前的文章中我们提到了TensorFlow TensorFlow 队列与多线程的应用以及TensorFlow TFRecord数据集的生成与显示,通过这些操作我们可以得到自己的TFRecord文件,并从其中解析出单个的Image和Label作为训练数据提供给网络模型使用,而在实际的网络训练过程中,往往不是使用单个数据提供给模型训练,而是使用一个数据集(mini-batch)

zhangxu 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

tensorflow笔记--训练数据集

""" Know more, visit my Python tutorial page: https://morvanzhou.github.io/tutorials/ My Youtube Channel: https://www.youtube.com/user/MorvanZhou More information about Dataset: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/docs_src/prog

Leon的博客 330

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Tensorflow-1: csv文件读写与分批训练

今天尝试了一下读写csv文件并使用tensorflow训练数据,很方便。 程序训练的一个单隐藏层的网络,程序中所用到的m3c_data_train.csv和m3c_data_test.csv文件都是由17列若干行的数据组成,17列包括输入12列、输出4列和用来打乱数据用的随机列。 # -*- coding: utf-8 -*- import tensorflow as tf import nu

YIK的博客 6569

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

为什么我的神经网络现在既不会报错,但是也不会运行下去了?卡在114行了

下图是我要运行的一个简单的神经网络,从train_classes_5_2.tfrecords文件中读入,并且通过tf.train.shuffle_batch()函数获得image_batch和label_batch,然后想通过sess.run([image_batch,label_batch])来获取batch_ximg,batch_ylabel,并且把batch_ximg,batch_ylab...

weixin_41531181的博客 1135

Tensorflow(十五) —— Tensor数据加载实战

Tensorflow(十五) —— Tensor数据加载实战1. 解决tensorflow输出无关信息问题2. 加载数据并转换类型3. 数据分割成不同batch4. 定义权值和偏置为:Tensor类型的Variable5. 参数训练 1. 解决tensorflow输出无关信息问题 import tensorflow as tf import os from tensorflow.keras import datasets from tensorflow import keras # 解决tensorf

Cyrus_May的博客 713

TF输入数据处理框架

1.用 tf.train.match_filenames_once() 获取存储训练数据的文件列表。(数据已转为 TFRecord 格式的多个文件) 2.用 tf.train.string_input_producer() 创建输入文件队列,可以将输入文件顺序随机打乱(shuffle = True) 3.用 tf.TFRecordReader() 读取TFrecords文件中的数据。 4.用

demons__的博客 1095

【tensorflow2.0】实例6

图片生成器的一个特性是可以把它指向一个目录,然后它的子目录将自动生成标签。 from tensorflow.keras,preprocessing.image import ImageDataGenerator 图片生成器在keras,preprocessing.image中,可以像如下这样实例化一个图片生成器。 train_datagen = ImageDataGenerator(rescale = 1./255) train_generator = train_datagen.flow_from_di

糊涂懿的博客 318

python数据处理框架_吴裕雄 python 神经网络——TensorFlow 输入数据处理框架

importtensorflow as tffiles= tf.train.match_filenames_once("E:\\MNIST_data\\output.tfrecords")filename_queue= tf.train.string_input_producer(files, shuffle=False)#读取文件。reader=tf.TFRecordReader()_,seri...

weixin_39923599的博客 142

用tf.data模块常用函数实现模型的训练

一、tf.data模块常用函数 1,用 from_tensor_slices 创建Tensor 数据集 input_data = np.arange(16) dataset = tf.data.Dataset.from_tensor_slices(input_data) for data in dataset: print(data) ''' 部分运行结果如下: tf.Tensor(0, shape=(), dtype=int32) tf.Tensor(1, shape=(), dtype=i

hnlg311709000526的博客 451

使用tensorflow读取自己的图片集,对keras.preprocessing.image_dataset_from_directory函数的理解

对Tensorflow中keras下函数的理解和运用 keras.preprocessing.image_dataset_from_directory()

weixin_45735249的博客 1679

深度学习笔记19_TensorFlow实现猫狗识别2

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 一、我的环境 1.语言环境:Python 3.9 2.编译器:Pycharm 3.深度学习环境:TensorFlow 2.10.0 二、GPU设置 若使用的是cpu则可忽略 import tensorflow as tf gpus = tf.config.list_physical_devices("GPU") if gpus: gpu0 = gpus[0]

L1073203482的博客 393

Tensorflow_入门学习_2_一个神经网络栗子

3.0A Neural Network Example 载入数据: from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) ont_hot:将数据集的标签转换为ont-hot编码,i.e. “...

weixin_33693070的博客 163

tesnsorflow简单神经网络构造

  # -*- coding:utf-8 -*- # author:taojianmin """ Know more, visit my Python tutorial page: https://morvanzhou.github.io/tutorials/ My Youtube Channel: https://www.youtube.com/user/MorvanZhou More...

TJMtaotao的博客,高校计算机教师 1114
上一篇: 【Atom】解决atom快捷键冲突——%,5
下一篇: 【Python】读取文件夹下的所有文件
yipala
博客等级 码龄8年 90粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值