1.首先想到的是用tf.placeholder()载入不同的数据来进行计算,比如

def inference(input_):"""this is where you put your graph.the following is just an example."""conv1 = tf.layers.conv2d(input_)conv2 = tf.layers.conv2d(conv1)return conv2input_ = tf.placeholder()
output = inference(input_)
...
calculate_loss_op = ...
train_op = ...
...with tf.Session() as sess:sess.run([loss, train_op], feed_dict={input_: train_data})if validation == True:sess.run([loss], feed_dict={input_: validate_date})

这种方式很简单,也很直接了然。

2.但是,如果处理的数据量很大的时候,使用 tf.placeholder() 来载入数据会严重地拖慢训练的进度,因此,常用tfrecords文件来读取数据。

此时,很容易想到,将不同的值传入inference()函数中进行计算。

train_batch, label_batch = decode_train()
val_train_batch, val_label_batch = decode_validation()train_result = inference(train_batch)
...
loss = ..
train_op = ...
...if validation == True:val_result = inference(val_train_batch)val_loss = ..with tf.Session() as sess:sess.run([loss, train_op])if validation == True:sess.run([val_result, val_loss])

这种方式看似能够直接调用inference()来对验证数据进行前向传播计算,但是,实则会在原图上添加上许多新的结点,这些结点的参数都是需要重新初始化的,也是就是说,验证的时候并不是使用训练的权重。

3.用一个tf.placeholder来控制是否训练、验证。

def inference(input_):.........return inference_resulttrain_batch, label_batch = decode_train()
val_batch, val_label = decode_validation()is_training = tf.placeholder(tf.bool, shape=())x = tf.cond(is_training, lambda: train_batch, lambda: val_batch)
y = tf.cond(is_training, lambda: train_label, lambda: val_label)logits = inference(x)
loss = cal_loss(logits, y)
train_op = optimize(loss)with tf.Session() as sess:loss, _ = sess.run([loss, train_op], feed_dict={is_training: True})if validation == True:loss = sess.run(loss, feed_dict={is_training: False})

使用这种方式就可以在一个大图里创建一个分支条件,从而通过控制placeholder来控制是否进行验证。

如何一边训练一遍验证相关推荐

  1. 【入门篇】如何正确使用机器学习中的训练集、验证集和测试集?

    [注] ·本文为转载文章,原文作者是王树义老师,原文链接为 https://zhuanlan.zhihu.com/p/71961236 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎 ...

  2. 如何正确使用机器学习中的训练集、验证集和测试集?

    王树义 读完需要 19 分钟 速读仅需7分钟 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎么用?看过这篇教程后,你就能游刃有余地处理它们了. 1 问题 审稿的时候,不止一次,我遇到 ...

  3. 【神经网络】学习笔记十五——训练集,验证集和测试集

    以前一直知道神经网络划分数据集时要分为训练集,测试集和验证集,但不知道并且一般以6:2:2的比例划分,到头来不知道这三者各是啥,以及他们的作用是什么.本片文档解释一下三者的作用. 重点在于验证集和测试 ...

  4. 训练集,验证集,测试集,泛化误差总结

    能不能只要训练集,不要测试集? 模型参数包含两类:模型参数,超参数:我们的任务是通过调整超参数使得模型参数更好的拟合数据 如果不需要调整模型的超参数,那可以不用验证集: 验证集的作用是模拟测试集,我们 ...

  5. 机器学习典型步骤以及训练集、验证集和测试集概念

    1. 机器学习典型步骤 数据采集和标记 数据清洗 特征选择 如房子的面积.地理位置.朝向.价格等. 模型选择 有监督还是无监督,问题领域.数据量大小.训练时长.模型准确度等多方面有关. 模型训练和测试 ...

  6. Keras构建前馈神经网络并使用callbacks输出acc以及loss曲线(训练接、验证集)及效果可视化

    Keras构建前馈神经网络并使用callbacks输出acc以及loss曲线(训练接.验证集)及效果可视化 在每个training/epoch/batch结束时,如果我们想执行某些任务,例如模型缓存. ...

  7. 可视化深度学习模型的训练误差和验证误差

    可视化深度学习模型的训练误差和验证误差 #导入基础包和库 # Load libraries import numpy as np from keras.datasets import imdb fro ...

  8. 一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)

    2019-12-20 20:01:00 数据在人工智能技术里是非常重要的!本篇文章将详细给大家介绍3种数据集:训练集.验证集.测试集. 同时还会介绍如何更合理的讲数据划分为3种数据集.最后给大家介绍一 ...

  9. 机器学习中训练集、验证集和测试集的区别

    通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集.验证集合测试集,划分比例一般为0.6:0.2:0.2.对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的.泛化能力 ...

最新文章

  1. 当你从事不喜欢的事怎么办
  2. 【51Nod - 1215 】数组的宽度 (单调栈 或 分治 或 单调队列,算贡献,需去重)
  3. QLibrary 出现错误的排查
  4. oracle 设置忽略关键字,记oracle里continue关键字的陷阱
  5. javaSE学习 访问控制
  6. navicate连接mysql问题(#1130 - Host 'localhost' is not allowed to connect to this MySQL server)
  7. LeetCode 67. Add Binary
  8. import gevent
  9. display:inline-block带来的问题及解决办法
  10. python,tensorflow,CNN实现mnist数据集的训练与验证正确率
  11. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 分块
  12. html转换成avi,HTML_视频转换大师WinMPG Video Convert 6.63,支持格式丰富,可快速完成AVI(RM - phpStudy...
  13. 惠普战99安装deepin20.2.4并驱动NVIDIA显卡
  14. 转换到coff期间_error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  15. 13讲项目实战内页滚动图效果实现
  16. ”一个馒头引发的血案“|记Mybatis之BindingException异常的产生及解决过程
  17. 产品经理–是否具有战略意义?
  18. 【XJTUSE 计算机组成与结构笔记】第六章 外存
  19. 架构 和 构架 定义
  20. NoteExpress引用文献出现ADDIN NE.Ref.

热门文章

  1. Fedora9-ATI显卡Gnome环境下Amarok和EVA花屏现象理会及其处理责罚方法。
  2. [转载] Python List index()方法
  3. [转载] python实现一个简易的计算器
  4. Linux基础命令---mke2fs
  5. 浅析 JNDI / DataSource / ConnectionPool 三者
  6. mysql慢查询日志分析工具(python写的)
  7. ExtFrame的特点与缺点
  8. ModuleNotFoundError: No module named ‘torchversion‘
  9. ABB RobotStudio6.08安装
  10. 为什么其他计算机连接需要密码是什么东西,连接其他电脑需要密码怎么处理