Gin*_*ser 11 python tensorflow tensorflow-datasets
我正在用 tf.data.Dataset 预处理的 CSV 文件中的数据训练我的 Tensorflow 模型。但是,我希望模型分叉为对应于一组不同 csv 列的三个分支,并且 model.fit 需要为每个输出提供一个单独的数据集。CSV 文件的所有列都需要进行相同的预处理,因此准备它的最有效方法是加载整个文件,对其进行处理,然后将数据集拆分为三个部分。但是,我正在努力寻找这样做的方法。
我希望 dataset.map 允许我使用以下操作选择一些列:
dset = dset.map(lambda x: x[[1, 2, 3, 7]])
Run Code Online (Sandbox Code Playgroud)
但似乎 tensorflow 将其解释为x[1][2][3][7]相反。
我发现创建单独数据集的唯一可行方法是从头开始:
y = []
for cls, keys in output_classes.items():
tmp = tf.data.experimental.CsvDataset(data_path, [tf.int32 for i in keys], select_cols=keys)
[...]
y.append(tmp)
y = tf.data.Dataset.zip(tuple(y))
Run Code Online (Sandbox Code Playgroud)
不幸的是,它会产生大量不必要的开销并极大地减慢训练速度。
有没有办法按功能子集拆分 tf.data.Dataset 对象?
尝试tf.gather:
tf.gather(tf.constant([1,2,3,4]), [1,2,3])
# ouputs : array([2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
如果您有高维数据,请使用tf.gather_nd.
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |