epoch训练时间不同_tesnorflow实现N个epoch训练数据读取的办法

方式一:不显示设置读取N个epoch的数据,而是使用循环,每次从训练的文件中随机读取一个batch_size的数据,直至最后读取的数据量达到N个epoch。说明,这个方式来实现epoch的输入是不合理。不是说每个样本都会被读取到的。

对于这个的解释,从数学上解释,比如说有放回的抽样,每次抽取一个样本,抽取N次,总样本数为N个。那么,这样抽取过一轮之后,该样本也是会有1/e的概率没有被抽取到。所以,如果使用这种方式去训练的话,理论上是没有用到全部的数据集去训练的,很可能会造成过拟合的现象。

我做了个小实验验证:

import tensorflow as tf

import numpy as np

import datetime,sys

from tensorflow.contrib import learn

from model import CCPM

training_epochs = 5

train_num = 4

# 运行Graph

with tf.Session() as sess:

#定义模型

BATCH_SIZE = 2

# 构建训练数据输入的队列

# 生成一个先入先出队列和一个QueueRunner,生成文件名队列

filenames = ['a.csv']

filename_queue = tf.train.string_input_producer(filenames, shuffle=True)

# 定义Reader

reader = tf.TextLineReader()

key, value = reader.read(filename_queue)

# 定义Decoder

# 编码后的数据字段有24,其中22维是特征字段,2维是lable字段,label是二分类经过one-hot编码后的字段

#更改了特征,使用不同的解析参数

record_defaults = [[1]]*5

col1,col2,col3,col4,col5 = tf.decode_csv(value,record_defaults=record_defaults)

features = tf.pack([col1,col2,col3,col4])

label = tf.pack([col5])

example_batch, label_batch = tf.train.shuffle_batch([features,label], batch_size=BATCH_SIZE, capacity=20000, min_after_dequeue=4000, num_threads=2)

sess.run(tf.initialize_all_variables())

coord = tf.train.Coordinator()#创建一个协调器,管理线程

threads = tf.train.start_queue_runners(coord=coord)#启动QueueRunner, 此时文件名队列已经进队。

#开始一个epoch的训练

for epoch in range(training_epochs):

total_batch = int(train_num/BATCH_SIZE)

#开始一个epoch的训练

for i in range(total_batch):

X,Y = sess.run([example_batch, label_batch])

print X,':',Y

coord.request_stop()

coord.join(threads)

toy data a.csv:

说明:输出如下,可以看出并不是每个样本都被遍历5次,其实这样的话,对于DL的训练会产生很大的影响,并不是每个样本都被使用同样的次数。

方式二:显示设置epoch的数目

#-*- coding:utf-8 -*-

import tensorflow as tf

import numpy as np

import datetime,sys

from tensorflow.contrib import learn

from model import CCPM

training_epochs = 5

train_num = 4

# 运行Graph

with tf.Session() as sess:

#定义模型

BATCH_SIZE = 2

# 构建训练数据输入的队列

# 生成一个先入先出队列和一个QueueRunner,生成文件名队列

filenames = ['a.csv']

filename_queue = tf.train.string_input_producer(filenames, shuffle=True,num_epochs=training_epochs)

# 定义Reader

reader = tf.TextLineReader()

key, value = reader.read(filename_queue)

# 定义Decoder

# 编码后的数据字段有24,其中22维是特征字段,2维是lable字段,label是二分类经过one-hot编码后的字段

#更改了特征,使用不同的解析参数

record_defaults = [[1]]*5

col1,col2,col3,col4,col5 = tf.decode_csv(value,record_defaults=record_defaults)

features = tf.pack([col1,col2,col3,col4])

label = tf.pack([col5])

example_batch, label_batch = tf.train.shuffle_batch([features,label], batch_size=BATCH_SIZE, capacity=20000, min_after_dequeue=4000, num_threads=2)

sess.run(tf.initialize_local_variables())

sess.run(tf.initialize_all_variables())

coord = tf.train.Coordinator()#创建一个协调器,管理线程

threads = tf.train.start_queue_runners(coord=coord)#启动QueueRunner, 此时文件名队列已经进队。

try:

#开始一个epoch的训练

while not coord.should_stop():

total_batch = int(train_num/BATCH_SIZE)

#开始一个epoch的训练

for i in range(total_batch):

X,Y = sess.run([example_batch, label_batch])

print X,':',Y

except tf.errors.OutOfRangeError:

print('Done training')

finally:

coord.request_stop()

coord.join(threads)说明:输出如下,可以看出每个样本都被访问5次,

这才是合理的设置epoch数据的方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看看这套WPF开源基础控件库:WPFDevelopers

此项目包含了 微信公众号 《 WPF开发者》 日常开发分享,欢迎Star。运行环境 Visual Studio 2019,dotNet Framework 4.0 SDK欢迎关注微信公众号支持贡献者DrawPrize(WPF 实现大转盘抽奖)GIF帧数太多,无法上传&#xff0…

如何将EDM营销与多渠道推广方式相结合

目前,消费者每天都会从各种渠道收到信息,如果仅用单一渠道的营销会影响整体营销。多渠道推广方式是所有渠道都要兼顾到从而接触用户,让他接收到他想接收的信息,多渠道的过程中邮件还是非常好的营销方式。你要想让你的EDM营销获得成…

Cannot resolve the collation conflict between SQL_Latin1_General_CP1_CI_AS and Latin1_General_100...

ErrorMessage Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_100_CI_AS" in the equal to operation. 查看SQL Server的Collation SELECT SERVERPROPERTY (Collation) Solution 1. 在安装SQL Server…

linux网络编程之用epoll实现io复用(基于tcp)

1、epoll介绍 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次…

语言 ota_荣威RX5 PLUS使用最新的家族设计语言,给人更年轻时尚的感觉

如果要用一个词来形容 荣威RX5 PLUS,我第一个能想到的便是“诚意”。斑马最新VENUS系统、米其林PS4轮胎、双层隔音玻璃、终身原厂质保、终身免费基础保养……从产品到政策,荣威RX5 PLUS的方方面面都显示出了上汽荣威的诚意。从上市到现在,荣威…

C# 制作指示灯(经典)

群友提问:C#中的指示灯怎么做,改变状态有什么好的方法吗?制作指示灯的方法有很多中:比如:通过GDI绘制自定义LED指示灯控件;调用现成的第三方控件库;采用label标签,通过改变背景色实现…

linux网络编程之SCTP套接字常用接口

转载地址: oracle开发帮助文档:http://docs.oracle.com/cd/E19253-01/819-7052/index.html SCTP 套接字接口 当 socket() 调用为 IPPROTO_SCTP 创建套接字时,它会调用特定于 SCTP 的套接字创建例程。针对 SCTP 套接字执行的套接字调用会自动调…

第一个c++泛型函数(即模板)

先定义如下&#xff1a; ns.h template <typename T> // 这个关键字typename, 明显多此一举 inline void PRINT_ELEMENTS(const T& coll,const std::string& optstr"") {std::cout << optstr << endl;for(const auto& ele:coll) {st…

结合ChatGPT和MINDSHOW自动生成PPT

总结/朱季谦 一、首先&#xff0c;通过chatGPT说明你的需求&#xff0c;学会提问是Ai时代最关键的一步。你需要提供一些关键信息&#xff0c;如果没有关键信息&#xff0c;就按照大纲方式让它设计&#xff0c;例如&#xff0c;我让它帮我写一份《2023年年中述职报告》的模版—…

位域全解析

所谓”位域“是把一个字节中的二进位划分为几 个不同的区域&#xff0c; 并说明每个区域的位数。每个域有一个域名&#xff0c;允许在程序中按域名进行操作。 它实际上是C语言提供的一种数据结构。使用位域的好处是&#xff1a; 1.有些信息在存储时&#xff…

华为怎么删除自带的音乐_原来华为手机相册隐藏剪辑功能!按下这个开关,还能制作音乐相册...

华为手机相册你肯定在用&#xff0c;但除了最近删除、智能搜索之外&#xff0c;你还知道手机相册的其他功能吗&#xff1f;这里就分享一个&#xff0c;相册中隐藏的实用剪辑功能&#xff0c;按下这个开关&#xff0c;还能把照片制作成音乐相册。创作开关首先将华为手机上的相册…

使用 Dapr 缩短软件开发周期,提高生产效率

Microsoft DevOps 文档里的文章&#xff08;https://docs.microsoft.com/zh-cn/azure/devops/report/dashboards/cycle-time-and-lead-time?viewazure-devops&#xff09;中的这张图片在给我们介绍了 什么是周期时间 以及它如何影响我的项目流时非常有影响力。第一次输入 &quo…

各种加密算法

2019独角兽企业重金招聘Python工程师标准>>> 如基本的单向加密算法&#xff1a; BASE64 严格地说&#xff0c;属于编码格式&#xff0c;而非加密算法MD5(Message Digest algorithm 5&#xff0c;信息摘要算法)SHA(Secure Hash Algorithm&#xff0c;安全散列算法)H…

C++之namespace和::使用总结

1、命名空间(namespace使用总结) C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字;有时为了程序的方便,必需使用同一名字,…

利用Xshell实现非对称秘钥对安全登陆linux服务器(Centos、Ubuntu)

非对称加密算法简述&#xff1a;对称加密算法在加密和解密时使用的是同一个秘钥&#xff1b;而非对称加密算法需要两个密钥来进行加密和解密&#xff0c;这两个秘钥是公开密钥&#xff08;public key&#xff0c;简称公钥&#xff09;和私有密钥&#xff08;private key&#x…

一秒点击屏幕次数测试_安卓App性能专项测试流畅度深度解析

指标背景流畅度&#xff0c;顾名思义是用户感知使用App页面时的流畅情况。“App卡不卡”&#xff0c;这是用户最直接的感受。 但是要用量化之后的数据衡量流畅度&#xff0c;在Android平台这边并没有直接有效的方式/手段去监控。帧率&刷新频率首先需要了解到两个概念&#…

PowerDesigner新建模板

http://my.oschina.net/kzhou/blog/150290转载于:https://www.cnblogs.com/mawenzhu/p/4390195.html

C# 实例解释面向对象编程中的单一功能原则

在面向对象编程中&#xff0c;SOLID 是五个设计原则的首字母缩写&#xff0c;旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集&#xff0c;在他2000年的论文《设计原则与设计模式》中首次提出…

C++之virtual 方法

1、例子1 #include <iostream> class A { public:const char* fetchClassName() { return "A"; } };class B: public A { public:const char* fetchClassName() { return "B"; } };int main(void) {B obj_b;A &obj_a = obj_b;std::cout <<…

U盘安装Ubuntu三步走

需要工具&#xff1a; U盘、Ubuntu的ISO镜像、universal usb installer 1、下载Ubuntu &#xff08;1&#xff09; &#xff08;2&#xff09;我这里下载14.04版本 &#xff08;3&#xff09;我这里下载64位系统 下载后得到的是个torrent种子&#xff0c;双击后用迅雷下载即可 …