我尝试使用pandas创建的CSV文件为Tensorflow创建数据集。
csv文件如下所示:
feature1 feature2 filepath label
0.25 0.35 test1.jpg A
0.33 0.15 test2.jpg B
我像这样读了数据框
mydf = pd.read_csv("TraingDatafinal.csv",header=0)
现在我已经定义了一个应该返回数据帧的函数。这完全符合the quickstart guide
def train_input_fn(features, labels, batch_size):
"""An input function for training"""
# Convert the inputs to a Dataset.
dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))
# Shuffle, repeat, and batch the examples.
dataset = dataset.shuffle(1000).repeat().batch(batch_size)
dataset = dataset.map(mappingfunction)
# Return the dataset
return dataset
我这样称呼这个函数;
mydataset = train_input_fn(mydf.drop(["label"],axis=1),mydf["label"],200)
如果我删除了映射,但是在打印形状时出现问号,这是有效的。为什么?维度似乎已明确界定。
这是真正的斗争开始的地方。我想创建一个映射函数,用一个图像数组替换文件路径。
我试图通过编写这个映射函数来实现它
def mappingfunction(feature,label):
print(feature['Filename'])
image = tf.read_file(feature['Filename'])
image = tf.image.decode_image(image)
return image,label
这只会返回图像和标签。我不知道如何实现它返回除文件路径之外的所有功能。
但即便是这种简化的版本也无法发挥作用。我得到一个"预期的二进制或unicode字符串"错误。你能救我吗?
答案 0 :(得分:0)
映射函数应返回所有要素和标签。例如:
def mappingfunction(feature,label):
print(feature['Filename'])
image = tf.read_file(feature['Filename'])
image = tf.image.decode_image(image)
features['image'] = image
return features, label
这会在功能字典中添加image
键。