1 回答
TA贡献1906条经验 获得超3个赞
使用嵌套结构Datasets作为@Sharky 的注释是解决方案之一。应该在最后一个函数中解压缩这个嵌套的 args , parse_h5而不是_pyfn_wrapper为了避免错误:
类型错误:张量对象仅在启用急切执行时才可迭代。要迭代此张量,请使用 tf.map_fn。
还应该解码参数,因为通过 tf.py_func() args 传递被转换为二进制文字。
代码修改如下:
def helper(...):
...
flist.append((os.path.abspath(os.path.join(dirpath, fname)), str(window_size)))
...
def _pyfn_wrapper(args):
return tf.py_func(parse_h5, #wrapped pythonic function
[args],
[tf.float32, tf.float32] #output dtype
)
def parse_h5(args):
name, window_size = args #only unzip the args here
window_size = int(window_size.decode('utf-8')) #and decode for converting bin to int
with h5py.File(name, 'r') as f:
...
添加回答
举报