簡體   English   中英

logits 和 labels 必須是可廣播的,labels 和 logits 維度不匹配

[英]logits and labels must be broadcastable, labels and logits dimension mismatch

我是 Tensorflow 和制作多類分類器的新手。 我的數據集有 6 個類別,圖像為 150x150。 我收到關於 Logits 和 Labels 尺寸不匹配的錯誤,

我在stackoverflow上看到了其他類似的問題,而我的問題似乎不是其中的任何一個。

請任何人告訴我錯誤是什么,並在構造我不需要告訴 output 層的批量大小時告訴我(如果你看到 model.summary,它是 None,它會在以后自動知道),那么有什么事情會影響它?

錯誤說:

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

Model定義如下:

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
                              )

看來您正在使用 AlexNet,但在小尺寸圖像上

如果您在較小的圖像上使用 AlexNet 架構,則需要調整圖像大小,或者您必須對 Pool 和 Stride 超參數進行一些更改,因為對於當前形狀,conv5 中會發生一些影響架構的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM