我有兩組資料,其中使用train_test_split. 我在model.fit用于運行培訓時遇到問題。任何人都可以幫助model.fit按正確的順序排列嗎?
(trainY1, valY1, trainX1, valX1) = train_test_split(df, images1, test_size=0.30, random_state=42)
print (np.shape(trainY1),np.shape(valY1),np.shape(trainX1),np.shape(valX1))
(trainY2, valY2, trainX2, valX2) = train_test_split(df, images2, test_size=0.30, random_state=42)
print (np.shape(trainY2),np.shape(valY2),np.shape(trainX2),np.shape(valX2))
結果:
(953,) (409,) (953, 16, 16, 4) (409, 16, 16, 4)
(953,) (409,) (953, 16, 16, 4) (409, 16, 16, 4)
模型:
v1 = layers.Input(shape = (16,16,4))
cnn1 = layers.Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), padding='same')(v1)
cnn1 = layers.Activation('relu')(cnn1)
cnn1 = layers.MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid')(cnn1)
cnn1 = layers.Flatten()(cnn1)
v2 = layers.Input(shape = (16,16,4))
cnn2 = layers.Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), padding='same')(v2)
cnn2 = layers.Activation('relu')(cnn2)
cnn2 = layers.MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid')(cnn2)
cnn2 = layers.Flatten()(cnn2)
merge = layers.concatenate([cnn1, cnn2])
dense = layers.Dense(50, activation='relu')(merge)
output = layers.Dense(1)(dense)
model = Model(inputs=[v1, v2], outputs=output)
model.compile(loss='mse', optimizer='adam')
model.fit([trainX1, trainY1], [trainX2, trainY2],validation_data=([valX1,valY1],[valX2,valY2]), epochs=5, batch_size=32, verbose=1)
錯誤:
輸入 KerasTensor(type_spec=TensorSpec (shape=(None, 16, 16, 4), , dtype=tf.float32, name='input_24'), name='input_24', description="created by layer 'input_24'"),但它在形狀不兼容的輸入上被呼叫 (None, 1)。
ValueError:層 conv2d_25 的輸入 0 與層不兼容:預期 min_ndim=4,發現 ndim=2。收到完整形狀:(無,1)
uj5u.com熱心網友回復:
您必須fit(*)按如下方式重新定義引數:
model.fit([trainX1, trainX2], [trainY1, trainY2],validation_data=([valX1,valX2],[valY1,valY2]), epochs=5, batch_size=32, verbose=1)
問題是您是否還希望模型為trainY1和輸出兩個值trainY2。目前,您只有兩個輸入和一個輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337544.html
上一篇:cv.imread的記憶體問題
