连接 string 和 tf.string 以获取路径

mag*_*mar 4 python tensorflow tensorflow2.0

我正在使用 API 处理 csv 文件tensorflow.Data。csv 中的一项功能是图像名称。为了加载图像,我需要构建一个将基本文件夹与图像名称相结合的路径。但是,由于图像名称是张量并且基本文件夹是字符串,因此我无法使用 os.path.join 将它们连接起来。我包括下面的代码。

def process_csv_data(folder_path, image_dimensions):
    width, height, channels = image_dimensions
    def map_function(raw_data):
        image_path = os.path.join(folder_path,raw_data['image_name'].numpy().decode('utf-8'))
        image = tf.io.read_file(image_path)
        image = tf.image.decode_jpeg(image, channels=channels)
        image = tf.image.resize(image, [width, height])
        image /= 255.0  # normalize to [0,1] range
        return image
    return map_function
Run Code Online (Sandbox Code Playgroud)

前一个函数的使用方法如下:

    raw_csv_dataset = tf.data.experimental.make_csv_dataset(
        csv_path,
        batch_size=1,
        column_names=CSV_COLUMNS,
        shuffle=False)

    dataset = raw_csv_dataset.map(
         process_csv_data(folder_path, image_dimensions, mode),
         num_parallel_calls=tf.data.experimental.AUTOTUNE)
Run Code Online (Sandbox Code Playgroud)

上面的代码产生这个错误:

AttributeError:“张量”对象没有属性“numpy”

我尝试了几种方法但没有成功,例如将文件夹名称转换为张量并使用tf.strings.join,或将 转换tf.string为标准 python string。那么,什么是正确的方法呢?

我正在使用张量流2.0

jde*_*esa 5

只需将字符串与+

image_path = folder_path + os.sep + raw_data['image_name']
Run Code Online (Sandbox Code Playgroud)

os.sep如果您确实需要路径分隔符(如果它不包含在 中folder_path)并且不想显式使用/或 ,请使用\