我正在尝试设置一个数据管道,从Parquet文件中读取数据,然后转换适当的格式(字节数组到浮点数列表),之后它将被馈送到tensorflow拟合方法。
注意:我实际输入的数据太庞大了,所以要分批阅读以进行训练。
设置输入数据管道时出现问题
下面是示例代码,其中包含我所获得的输入类型。
import pandas as pd
import numpy as np
import tensorflow as tf
import tensorflow_io as tfio
df1 = pd.DataFrame({'col1':['[1.2, 2.3, 4.5]', '[1.0, 2.2, 4.3]'], 'col2':['[1.2, 0.3, 0.9]', '[1.1, 9.2, 5.3]']})
df2 = pd.DataFrame({'col1':['[1.1, 2.1, 4.1]', '[1.09 2.29, 4.39]'], 'col2':['[12.2, 20.3, 20.96]', '[12.1, 19.2, 15.3]']})
df1.to_parquet("foo.parquet")
df2.to_parquet("bar.parquet")
columns = {
"col1": tf.TensorSpec(tf.TensorShape([]), tf.string),
"col2": tf.TensorSpec(tf.TensorShape([]), tf.string),
}
ds = tf.data.Dataset.list_files("*.parquet")
ds = ds.interleave(lambda f: tfio.IODataset.from_parquet(f, columns=columns), cycle_length=2, block_length=2) # returns an ordered dict
def decode_json(ip):
return tf.py_function(json.loads, [ip], Tout=[tf.float32])
def decode(ip):
out1 = ip["col1"].map(decode_json)
out2 = ip["col2"].map(decode_json)
return out1, out2
ds = ds.map(decode)
for elem in ds:
print(elem)
这会产生错误“AttributeError:“Tensor”对象没有属性“map”“
1条答案
按热度按时间rqqzpn5f1#
这将产生错误“AttributeError:'Tensor'对象没有属性'map'"
如果你告诉我们是哪条线会有帮助。
我很确定是这条线。
我认为
tfio.IODataset.from_parquet(f, columns=columns)
返回Tensor字典的数据集。ds.map(decode)
行将decode应用于数据集中的每个项。这些项是Tensor的字典。我觉得你想要的是: