在张量流中读取数据

Posted

技术标签:

【中文标题】在张量流中读取数据【英文标题】:Reading data in tensorflow 【发布时间】:2017-12-12 00:51:31 【问题描述】:

我正在从文档中学习如何使用 tensorflow。但是,我无法理解以下两个功能。我已尝试搜索文档,但无法得到明确的答案。

input_fn = tf.contrib.learn.io.numpy_input_fn("x":x_train, y_train,
                                          batch_size=4,
                                          num_epochs=1000)
eval_input_fn = tf.contrib.learn.io.numpy_input_fn(
    "x":x_eval, y_eval, batch_size=4, num_epochs=1000)

另外,如果你能解释一下函数中的参数是什么,那就太好了。提前致谢!

【问题讨论】:

【参考方案1】:

我同意documentation 没有很好地解释这些值。

第一个参数是网络输入值的字典。

第二个是输出值。

batch_size 是训练网络一次取的项目数,当你有大量数据时,如果你用每个值训练网络,训练太慢,所以你使用批次,因此如果 x_train 有 16 个项目并且批次大小为 4,则网络将使用前 4 个,然后是接下来的 4 个进行训练,直到使用所有 16 个输入。

num_epochs 是在您退出尝试优化网络节点之前的前后传递次数。

对于批量大小和 epoch 数量,您可以根据您希望花费多少时间进行训练与性能有多好来调整这些参数。

关于terms的精彩描述。

取自 an example,然后您可以使用 input_fn 获取特征和目标值,以便传递以运行该数据。

例如:

with self.test_session() as session:
  input_fn = numpy_io.numpy_input_fn("x":x_train, y_train,
                                      batch_size=4,
                                      num_epochs=1000)
  features, target = input_fn()

  res = session.run([features, target])

这两个函数做同样的事情,只是 input_fn 用于训练网络,eval_input_fn 用于评估,所以唯一的区别是 x 和 y 值,因为当您评估训练数据的性能时,性能将是上限或最佳情况。

【讨论】:

谢谢!另外,你能解释一下这些函数本身的作用吗?

以上是关于在张量流中读取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在火花结构化流式读取流中倒带 Kafka 偏移

连续从流中读取?

Java从内存流中读取byte数组

如何从子目录加载张量流中的数据

是否可以从输入流中“丢弃”读取值?

怎么从InputStream流中逐行读取,即遇换行再读取