如何使用tensorflow数据集,使用每个numpy文件带有pth的csv



我拥有一个numpy文件的数据集,它们与我的所有标签一起列在csv(每个numpy文件路径(中。要素列是每个文件的路径。

读到一些老问题(从csv文件读取图像并返回tf.data.Dataset对象的有效方法(,我想我可以使用这样的东西:

def load_and_preprocess_image(path):
image = np.load(path)
return preprocess_image(image)
def load_and_preprocess_from_path_label(path, label):
return load_and_preprocess_image(path), label
dataset_train = tf.data.Dataset.from_tensor_slices((train_features.values, train_labels.values))
dataset_train_Batched = dataset_train.map(partial(load_and_preprocess_from_path_label))

但我得到了一个错误,因为";路径";不是字符串也不是路径,而是张量。。。如何读取这个张量来获得值?我试过使用

def load_and_preprocess_image(path):
sess = tf.compat.v1.Session()
with sess.as_default():
a_value = sess.run(path)
image = np.load(a_value)
return preprocess_image(image)

这无济于事。我被卡住了。

你能帮我找到如何读取路径来预处理我的numpyfiles吗?

非常感谢,Alex

我找到了一个解决方案。

该问题是由于";地图";方法

您可以使用.numbery来获取张量的值,但不能使用map。

例如:此代码有效:

for ds,ds2 in dataset_train.take(1):
pathtest, labeltest = load_and_preprocess_from_path_label(ds.numpy()[0], ds2)

但这个不起作用:

dataset_train_Batched = dataset_train.shuffle(42).map(lambda x,y : load_and_preprocess_from_path_label(x.numpy[0],y)).batch(BATCH)

如果使用map方法,则必须使用tf.py_function来读取张量。

就我而言:

def load_and_preprocess_image(path):
[image,] = tf.py_function(np.load, [path], [tf.string])
return preprocess_image(image)
def load_and_preprocess_from_path_label(path, label):
return load_and_preprocess_image(path), label

祝度过美好的一天

最新更新