tensorflow 形状(None,1)和(None,6)在CNN中不兼容

kmb7vmvb  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(141)

这是我的y_train:

array(['smallpox', 'chickenpox', 'cowpox', ..., 'monkeypox', 'smallpox',
       'smallpox'], dtype='<U10')

包含6个不同的类别,我得到的错误,我的形状是不正确的最后一层
型号为Model:

"model_19"
    _________________________________________________________________
     Layer (type)                Output Shape              Param #   
    =================================================================
     input_48 (InputLayer)       [(None, 64, 64, 3)]       0         
                                                                     
     conv2d_23 (Conv2D)          (None, 64, 64, 3)         84        
                                                                     
     efficientnetb3 (Functional)  (None, None, None, 1536)  10783535 
                                                                     
     global_average_pooling2d_16  (None, 1536)             0         
      (GlobalAveragePooling2D)                                       
                                                                     
     dense_59 (Dense)            (None, 6)                 9222      
                                                                     
    =================================================================
    Total params: 10,792,841
    Trainable params: 10,705,538
    Non-trainable params: 87,303
    _________________________________________________________________

错误为:

ValueError: Shapes (None, 1) and (None, 6) are incompatible
mzsu5hc0

mzsu5hc01#

可以使用pandas.Categorical将字符串类型的类别转换为整数。
我已使用以下方法创建了包含标注的数据框

df = pd.DataFrame({'labels':['apple','mango','orange','apple']})

你可以把它们转换成整数Pandas。

df['int'] = pd.Categorical(df['labels']).codes

输出:

labels   int
0   apple   0
1   mango   1
2   orange  2
3   apple   0

然后你可以传递这些整数来训练你的模型。谢谢。

相关问题