python - 拆分数据时在 TensorFlow 中使用 map 函数
问题描述
我正在使用 atf.data.Dataset
并且我想对函数中的每个元素进行一些预处理。在这个函数中,我还想创建每个元素的块:
def preprocess(element):
# Get input and label of element and num_chunks
...
x_batch, y_batch = None, None
for i in range(num_chunks):
start = ...
end = ...
chunk = input[start: end]
# Some more preprocessing
...
chunk = tf.expand_dims(chunk, axis=0)
current_label = tf.expand_dims(label, axis=0)
x_batch = chunk if x_batch is None else tf.concat([x_batch, chunk], axis=0)
y_batch = current_label if y_batch is None else tf.concat([y_batch, current_label], axis=0)
return x_batch, y_batch
之后,我想dataset.map(preprocess)
在我的数据集中使用,但我不确定处理预处理函数拆分数据的最佳方法是什么。我可以遍历数据集的每个元素
for element in iter(ds):
x_batch, y_batch = preprocess(element)
# Manually concatenate each x_batch
...
但这有时意味着内存不足。
如果我直接这样做:
preprocess_ds = ds.map(preprocess, num_parallel_calls=tf.data.AUTOTUNE)
我得到:
"Cannot convert a partially known TensorShape to a Tensor: %s" % s)
ValueError: Cannot convert a partially known TensorShape to a Tensor: (1, None, 129)
解决方案
推荐阅读
- saml - PHP 库是否与 SAML2.0 的 Google Workspace (G Suite) SSO 兼容?
- matlab - 在 Matlab 中使用 parfor 进行并行计算
- javascript - 反应:向映射项目添加/触发活动类
- c# - 用于在具有多个 DBcontexts 的表中搜索值的通用函数
- excel - 为什么 VBA 脚本在文件的开头/结尾添加双引号
- java - netbeans 图标在设计器中正常,但在运行时失败(maven)
- python-requests - 如何验证下载谷歌驱动器文件的请求
- c++ - 在 OpenGL 中,如何使用 glGetTexImage 获取 GL_TEXTURE_CUBE_MAP_ARRAY 类型纹理的面的像素数据?
- flutter - 如何将数据从 Singleton 传递到 Stateful Widget 类?
- c++ - 如何在 OOP 中正确使用智能指针