[英]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.