我正在创建一个 CNN,它使用 14 个可以共存的不同类别对 CXR 进行多标签分类。( https://stanfordmlgroup.github.io/competitions/cheexpert/ )。我将 Python 与 Keras 和 Tensorflow 一起使用,现在我正在尝试让代码工作(使用小型测试 CNN),但我收到错误“ValueError:logits 和标签必须具有相同的形状((None,14)vs(无,1))”我使用了具有二元交叉熵损失的 sigmoid 激活函数。我认为创建训练和验证数据集可能会出现问题。如图所示,我将 ImageDataGenerator.flow_from_dataframe 函数与 pandas 数据框一起使用,所有 14 个标签(0 或 1)都有一列。 熊猫数据框结构
我在 stackoverflow/github 上搜索了同样的问题,但他们大多不使用 ImageDataGenerator 并且必须调整 X 或 Y 的大小,但我不知道我将如何做到这一点。有谁知道出了什么问题?提前致谢!我的代码如下。
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.callbacks import TensorBoard
import time
import h5py
df = pd.read_csv('D:\\Milou\\CheXpert-v1.0-small\\train.csv', usecols = [0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18])
df = df.fillna(0) # Change NaN values to 0
df = df.convert_dtypes() # Change datatypes from float to integer if possible
df = df.replace({-1 : 0}) # Regard the uncertain labels '-1' as negative
print(df.head(5))
label_names = ["No Finding", "Enlarged Cardiomediastinum", "Cardiomegaly", "Lung Opacity", "Lung Lesion", "Edema", "Consolidation", "Pneumonia", "Atelectasis", "Pneumothorax", "Pleural Effusion", "Pleural Other", "Fracture", "Support Devices"]
datagen=ImageDataGenerator(rescale=1./255, validation_split=0.2)
第一次在 stackoverflow 上提问,所以请不要犹豫,就缺少的信息等提供反馈!
呼如林
月关宝盒
慕娘9325324
相关分类