Python 执行器未能创建内核。未实现:不支持将字符串强制转换为int64

Python 执行器未能创建内核。未实现:不支持将字符串强制转换为int64,python,tensorflow,neural-network,conv-neural-network,image-recognition,Python,Tensorflow,Neural Network,Conv Neural Network,Image Recognition,我试图使用最新版本的TensorFlow来训练一个包含306张食物图像的本地数据集。然而,当我试着运行它时,它打印出来了 培训306个样本 纪元1/5 在这一点上,它只是停止做任何事情,所以当我试图在cmd中运行它时,我得到了以下错误 Train on 306 samples Epoch 1/5 2019-12-09 15:11:42.788897: E tensorflow/core/common_runtime/executor.cc:642] Executor failed to crea

我试图使用最新版本的TensorFlow来训练一个包含306张食物图像的本地数据集。然而,当我试着运行它时,它打印出来了

培训306个样本

纪元1/5

在这一点上,它只是停止做任何事情,所以当我试图在cmd中运行它时,我得到了以下错误

Train on 306 samples
Epoch 1/5
2019-12-09 15:11:42.788897: E tensorflow/core/common_runtime/executor.cc:642] Executor failed to create kernel. Unimplemented: Cast string to int64 is not supported
         [[{{node loss/activation_2_loss/Cast}}]]
我已经看了100遍代码了,我似乎不明白我哪里弄错了,我也找不到任何其他帖子的解决方案

现在查看代码

我从加载图像、调整图像大小和分配标签开始:

TRAIN_DIR = './food11/training'
class_names=['Bread', 'Dairy product', 'Dessert', 'Egg', 'Fried food', 'Meat']
def load_training_data(DIR):
    train_data = []
    for img in os.listdir(DIR):
        word_label = int(img.split('_')[0])
        label = class_names[word_label]
        path = os.path.join(DIR, img)
        if "DS_Store" not in path:
            img = Image.open(path)
            img = img.convert('L')
            img = img.resize((IMG_SIZE, IMG_SIZE), Image.ANTIALIAS)
            train_data.append([np.array(img), label])

    shuffle(train_data)
    return train_data

train_data = load_training_data(TRAIN_DIR)
trainImages = np.array([i[0] for i in train_data]).reshape(-1, IMG_SIZE,IMG_SIZE, 1)
trainLabels = np.array([i[1] for i in train_data])
然后,我对图像进行了标准化,并创建了一个由6个神经元组成的小模型:

model = Sequential()

model.add(Conv2D(32, (3, 3), input_shape=(IMG_SIZE, IMG_SIZE, 1)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))


model.add(Flatten())
model.add(Dense(128))
model.add(Activation("relu"))


model.add(Dense(6))
model.add(Activation("softmax"))


model.compile(loss="sparse_categorical_crossentropy",
                optimizer="adam",
                metrics=["accuracy"])


model.fit(trainImages, trainLabels, batch_size = 50, epochs = 5, verbose = 1)

任何帮助都将不胜感激。谢谢你抽出时间

这个问题的解决方案是关于“标签”的一个小错误

它以字符串的形式返回TrainLabel(类名称而不是索引),因此我通过将上面的行替换为

label = int(img.split('_')[0])

我相信这与这行
train\u data.append([np.array(img),label])
以及label是字符串这一事实有关。但是它仍然不能帮助我修复它。你能打印出几行这个
train\u data=load\u training\u data(train\u DIR)
吗。例如,
train\u data[:3,:]
train\u data.shape
label = int(img.split('_')[0])