【问题标题】:logits and labels must be broadcastable, labels and logits dimension mismatchlogits 和 labels 必须是可广播的,labels 和 logits 维度不匹配
【发布时间】:2020-07-07 16:23:21
【问题描述】:

我是 Tensorflow 的新手,正在制作多类分类器。我的数据集有 6 个类别,图像为 150x150。 我收到关于 Logits 和 Labels 尺寸不匹配的错误,

我在 stackoverflow 上看到过其他此类问题,但我的问题似乎不是其中任何一个。

请任何人告诉我错误是什么,并在构建时告诉我不需要告诉输出层的批量大小(如果你看到 model.summary,它是 None,它稍后会自动知道),所以有什么事情会影响它.?

错误说:

logits and labels must be broadcastable: logits_size=[40,6] labels_size=[10,6]

模型定义如下:

batch_size = 10
epochs = 100
IMG_HEIGHT = 150
IMG_WIDTH = 150
IMG_CHANNEL = 3
classes = 6



inputs = Input(shape=(IMG_HEIGHT, IMG_WIDTH ,3))
conv1 = Conv2D(96, 11, strides=(4,4) , padding='valid', activation='relu')(inputs)
pool1 = MaxPooling2D(pool_size=(3, 3), strides=(2,2), padding='valid', data_format=None)(conv1)
a = tf.keras.layers.Lambda(tf.nn.local_response_normalization)
lrn1 = a(pool1)
conv2 = Conv2D(256, 5, padding='same', strides=(1,1) , activation='relu')(lrn1)
pool2 = MaxPooling2D(pool_size=(3, 3), strides=(2,2), padding='valid', data_format=None)(conv2)
b = tf.keras.layers.Lambda(tf.nn.local_response_normalization)
lrn2 = b(pool2)
conv3 = Conv2D(384, 3, padding='same', strides=(1,1), activation='relu')(lrn2)
conv4 = Conv2D(384, 3, padding='same', strides=(1,1), activation='relu')(conv3)
conv5 = Conv2D(256, 3, padding='same', strides=(1,1), activation='relu')(conv4)
conv6 = MaxPooling2D(pool_size=(3, 3), strides=(2,2), padding='valid', data_format=None)(conv5)
flat1 = Flatten()(conv6)
dense1 = Dense(4096, activation='relu')(flat1)
drop1 = Dropout(0.5)(dense1)
dense2 = Dense(4096, activation='relu')(drop1)
drop2 = Dropout(0.5)(dense2)
dense3 = Dense(classes,activation='softmax')(drop2)


model = Model(inputs=inputs, outputs=dense3, name="one")

opt = SGD(lr=0.1, momentum=0.1)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])


# Generator Declaration
train_image_generator = ImageDataGenerator(
                                              rescale=1./255,
                                              rotation_range=45,
                                              width_shift_range=.15,
                                              height_shift_range=.15,
                                              horizontal_flip=True,
                                              zoom_range=0.5
                                        ) # Generator for our training data

validation_image_generator = ImageDataGenerator(
                                         rescale=1./255
                                        ) # Generator for our validation data
train_data_gen = train_image_generator.flow_from_directory(
                                                           batch_size=batch_size,
                                                           directory=train_dir,
                                                           shuffle=True,
                                                           class_mode='categorical',
                                                           target_size=(IMG_HEIGHT, IMG_WIDTH)
                                                         )



val_data_gen = validation_image_generator.flow_from_directory(  
                                                              batch_size=batch_size,
                                                              directory=val_dir,
                                                              class_mode='categorical',
                                                            )

history = model.fit(
                              train_data_gen,
                              steps_per_epoch=3000//batch_size,
                              epochs=epochs, validation_data=val_data_gen,
                              validation_steps=3000//batch_size
                              )

【问题讨论】:

    标签: python tensorflow machine-learning keras conv-neural-network


    【解决方案1】:

    您似乎在使用 AlexNet,但在小尺寸图像上

    如果您在较小的图像上使用 AlexNet 架构,则需要调整图像大小,或者您必须对 Pool 和 Stride 超参数进行一些更改,因为对于当前形状,conv5 中会发生一些影响架构的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 2022-01-05
      • 2017-09-12
      相关资源
      最近更新 更多