簡體   English   中英

在keras中修復3D Conv的input_shape(后端的Tensorflow)

[英]fix input_shape of 3D Conv in keras (Tensorflow at the backend)

我有大約8k +圖像。 在預處理后,我有大小為224 * 224 * 3的numpy圖像數組,我使用inception_V3作為基本模型。 我有二進制分類的標簽(y)。

以下是一些快速見解:

X_train.shape = (5058, 224, 224, 3, 1)   #after reshaping

Conv_3d input_shape = (5058,224,224, 3) 

現在,當我嘗試適合我的模型時,我收到此錯誤:

ValueError:檢查輸入時出錯:期望conv3d_42_input具有形狀(5058,224,224,3),但得到的形狀為數組(224,224,3,1)

base_model = InceptionV3(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

def conv_3d():

    model = Sequential()
    model.add(Conv3D(32, (3, 3, 3), activation='relu',input_shape= (5058,224,224, 3) ,padding='same'))                      #(time_sequence, width, height, channels)
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))
    model.add(Conv3D(64, (3, 3, 3), activation='relu'))
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))
    model.add(Conv3D(128, (3, 3, 3), activation='relu'))
    model.add(Conv3D(128, (3, 3, 3), activation='relu'))
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))
    model.add(Conv3D(256, (2, 2, 2), activation='relu'))
    model.add(Conv3D(256, (2, 2, 2), activation='relu'))
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))

    model.add(Flatten())
    model.add(Dense(1024))
    model.add(Dropout(0.5))
    model.add(Dense(1024))
    model.add(Dropout(0.5))
    model.add(Dense(2, activation='softmax'))

    return model


X_train_temp = X_train.reshape(X_train.shape[0], 224, 224, 3, 1)
X_valid_temp = X_valid.reshape(X_valid.shape[0], 224, 224, 3, 1)

model.fit(X_train_temp, y_train, epochs=50, validation_data=(X_valid_temp, y_valid))

從字面上看,我搞砸了上面的錯誤。 我也看到了一些類似的答案,但找不到解決方案

def conv_3d():

    model = Sequential()
    model.add(Conv3D(32, (3, 3, 3), activation='relu',input_shape= (224,224,3) ,padding='same'))                      #(time_sequence, width, height, channels)
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))
    model.add(Conv3D(64, (3, 3, 3), activation='relu'))
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))
    model.add(Conv3D(128, (3, 3, 3), activation='relu'))
    model.add(Conv3D(128, (3, 3, 3), activation='relu'))
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))
    model.add(Conv3D(256, (2, 2, 2), activation='relu'))
    model.add(Conv3D(256, (2, 2, 2), activation='relu'))
    model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2)))

    model.add(Flatten())
    model.add(Dense(1024))
    model.add(Dropout(0.5))
    model.add(Dense(1024))
    model.add(Dropout(0.5))
    model.add(Dense(2, activation='softmax'))

    return model


X_train_temp = X_train.reshape(X_train.shape[0], 224, 224, 3, 1)
X_valid_temp = X_valid.reshape(X_valid.shape[0], 224, 224, 3, 1)

model.fit(X_train_temp, y_train, epochs=50, validation_data=(X_valid_temp, y_valid))

暫無
暫無

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

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