首页 > 解决方案 > Logits 和标签必须是可广播的错误?

问题描述

我对深度学习很陌生。我正在对动漫插图图像进行培训,但收到错误消息:logits and labels must be broadcastable: logits_size=[214,2] labels_size=[214,173]

我确信我的代码中还有其他错误,但我不确定在哪里查看。我运行了 model.summary() 并注意到总参数:12,219,618 可训练参数:7,080,962 不可训练参数:5,138,656

我真的很感激任何帮助。谢谢。

import tensorflow as tf
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Activation, Dropout, Flatten, Dense
from tensorflow.keras import backend as K
from tensorflow.keras import metrics, optimizers
import matplotlib.pyplot as plt

train_datagen = ImageDataGenerator( 
    rescale=1. / 255, 
    rotation_range = 30,  
    zoom_range = 0.2, 
    width_shift_range=0.1,  
   height_shift_range=0.1,
   validation_split = 0.15) 
  
test_datagen = ImageDataGenerator(rescale=1. / 255) 
  
train_generator = train_datagen.flow_from_directory( 
    train_dir, 
    target_size = (75,75),
    batch_size = 214,
    class_mode = 'categorical',
    subset='training') 
  
#validation_generator = test_datagen.flow_from_directory( 
#    validation_dir, 
#    target_size = (75,75),
#    batch_size = 37,
#    class_mode = 'categorical',
#    subset = 'validation')

test_generator = test_datagen.flow_from_directory(
    test_dir,
    target_size=(75,75),
    batch_size = 32,
    class_mode = 'categorical')

# Inspect batch
sample_training_images, _ = next(train_generator)

from tensorflow.keras.applications.inception_v3 import InceptionV3
def model_output_for_TL (pre_trained_model, last_output):    
    x = Flatten()(last_output)
    
    # Dense hidden layer
    x = Dense(1024, activation='relu')(x)
    x = Dropout(0.5)(x)
    
    # Output neuron. 
    x = Dense(2, activation='softmax')(x)
    
    model = Model(pre_trained_model.input, x)
    
    return model
pre_trained_model = InceptionV3(input_shape = (75, 75, 3), 
                                include_top = False,
                                classes=173, 
                                weights = 'imagenet')
for layer in pre_trained_model.layers:
  layer.trainable = False
last_layer = pre_trained_model.get_layer('mixed5')
last_output = last_layer.output
model_TL = model_output_for_TL(pre_trained_model, last_output)

model_TL.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
history_TL = model_TL.fit(
      train_generator,
      steps_per_epoch=10,  
      epochs=60,
      verbose=2)
      #validation_data = validation_generator)
tf.keras.models.save_model(model_TL,'my_model.hdf5')

标签: pythontensorflowmachine-learningkerasdeep-learning

解决方案


推荐阅读