AttributeError: 'Tensor' object has no attribute 'numpy' while mapping a function through my dataset

AttributeError: 'Tensor' object has no attribute 'numpy' while mapping a function through my dataset

我正在尝试将函数 process_image 映射到数据集。此函数调用另一个函数 get_label。在 get_label 中,我正在尝试从图像中检索标签的名称。

文件路径是这样的:C:\Users\sis\Desktop\test\0002_c1s1_000451_03.jpg。标签是数字 0002.

def get_lab(file_path):
    parts = tf.strings.split(file_path, os.path.sep)
    part=parts[-1].numpy().decode().split('_')[0]
    label=tf.strings.to_number(part)
    return label

您可以申请创建足以供外部程序使用的文件夹名称。

[样本]:

import os
import tensorflow as tf

def get_lab(file_path):
    parts = tf.strings.split(file_path, os.path.sep)
    part=parts[-2].numpy().decode().split('.')[0]
    label=tf.strings.to_number(part)
    return label.numpy()

directory = "F:\datasets\downloads\Actors\train\Candidt Kibt\01.tif\"
print( 'label as number: ' + str(get_lab( directory )) )

directory = "F:\datasets\downloads\Actors\train\"
print( 'classname: ' + str(tf.io.gfile.listdir(
    directory
))
)

[输出]:

label as number: 1.0
classname: ['Candidt Kibt', 'Pikaploy']

F:\temp\Python>

我解决了!没看懂到底哪里出错了,我觉得之前的代码混合了eager模式和graph模式,所以我改了get_label函数的代码就成功了!

def get_lab(file_path):

    parts = tf.strings.split(file_path, os.path.sep)[-1]
    part=tf.strings.split(parts, sep='_')[0]
    print(part)
    label=tf.strings.to_number(part)
    return label