У меня есть модель с несколькими выходами, заданная как
inputs = tf.keras.layers.Input(shape=(128, 128, 3))
x = inputs
x = layers.Conv2D(32,3,activation='relu')(x)
x = layers.Conv2D(32,3,activation='relu')(x)
x = layers.MaxPool2D(2)(x)
x = layers.Dropout(0.3)(x)
x = layers.Flatten()(x)
x = layers.Dense(64,activation='relu')(x)
gender_out = layers.Dense(2,activation='sigmoid',name='gender_out')(x) # first output
age_out = layers.Dense(1,activation='relu',name='age_out')(x) # second output
model = tf.keras.models.Model(inputs=inputs, outputs=[gender_out, age_out])
loss_funcs = { "gender_out": 'binary_crossentropy',"age_out":'mae'}
model.compile(optimizer='Adam',loss=loss_funcs,metrics=['accuracy'])
, и у меня есть пути к моим изображениям и соответствующие метки в DataFrame
как:
img_path age gender
16950 /kaggle/input/UTKFace/26_1_3_20170109134536902... 26 1
20465 /kaggle/input/UTKFace/26_1_1_20170114031102802... 26 1
18407 /kaggle/input/UTKFace/10_1_0_20170109202346880... 10 1
656 /kaggle/input/UTKFace/7_1_3_20161220222033539.... 7 1
7368 /kaggle/input/UTKFace/2_1_2_20161219153833780.... 2 1
ПРОБЛЕМА
Когда я загружаю данные в OpenCV, чтобы уместить их в модель, выдается ошибка:
df = df.sample(frac=1.0)
gender = df['gender'].tolist()
age = df['age'].tolist()
X_train = []
for i in tqdm(range(len(df))):
X_train.append(cv2.imread(img_path)) # HERE is the PROBLEM
y_trains = { "gender_out": gender,"age_out": age,}
, когда я подгоняю данные, выдает ошибку
model.fit(X_train, y_trains, epochs=50,batch_size=128,validation_split=0.2)
Как загрузить данные в модель с помощью CV2.IMREAD (ИЛИ ЛЮБОГО ДРУГОГО МЕТОДА) В МОЕМ СЛУЧАЕ ?