ira*_*ira 11 csv preprocessor tensorflow tensorflow-datasets
我已经看到了很多关于使用LSTM进行张量流时间序列的指南,但我仍然不确定当前读取和处理数据的最佳实践 - 特别是当人们应该使用tf.data.DatasetAPI时.
在我的情况下,我有一个文件data.csv与我features,并希望做以下两个任务:
计算目标 - 目标时间t是某个范围内某些列的百分比变化,即
labels[i] = features[i + h, -1] / features[i, -1] - 1
Run Code Online (Sandbox Code Playgroud)
我想h在这里成为一个参数,所以我可以尝试不同的视野.
滚动窗口 - 出于培训目的,我需要将我的功能滚动到长度为的窗口window:
train_features[i] = features[i: i + window]
Run Code Online (Sandbox Code Playgroud)我很乐意使用pandas或构建这些对象numpy,所以我不会问如何实现这一点 - 我的问题是具体应该是什么样的管道tensorflow.
编辑:我想我也想知道我列出的2个任务是否适合数据集api,或者我最好使用其他库来处理它们?
首先,请注意您可以将数据集API 与 pandas或numpy数组一起使用,如教程中所述:
如果所有输入数据都适合内存,那么从中创建
Dataset它们的最简单方法 是将它们转换为tf.Tensor对象并使用Dataset.from_tensor_slices()
一个更有趣的问题是,您是否应该使用session feed_dict或via Dataset方法组织数据管道.正如评论中已经说明的那样,数据集API更有效,因为数据直接流向设备,绕过客户端.来自"绩效指南":
虽然使用a
feed_dict提供数据提供了高度的灵活性,但在大多数情况下使用feed_dict不能以最佳方式进行扩展.但是,在仅使用单个GPU的情况下,差异可以忽略不计.仍强烈建议使用数据集API.尽量避免以下情况:Run Code Online (Sandbox Code Playgroud)# feed_dict often results in suboptimal performance when using large inputs sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
但是,正如他们自己所说,差异可能是微不足道的,GPU仍可以通过普通feed_dict输入充分利用.当训练速度不是很关键时,没有区别,使用任何你觉得舒服的管道.当速度很重要且你有一个大的训练集时,数据集API似乎是一个更好的选择,尤其是你计划分布式计算.
数据集API可以很好地处理文本数据,例如CSV文件,结帐数据集教程的这一部分.
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |