Я работаю с набором данных рентгеновского снимка грудной клетки, содержащим 15 классов. Имена файлов изображений зарезервированы в файле CSV с некоторыми значениями, отличными от изображений. Набор данных изображения разделен на поезд, тест и проверку. Я использовал imagedatagenerator для увеличения изображений.
|---------------------|------------------|---------------|
| Image Index | Patient Gender | View Position |
|---------------------|------------------|---------------|
| 00008236_001.png | 1 | 0 |
|---------------------|------------------|---------------|
| 00016410_014.png | 0 | 1 |
|---------------------|------------------|---------------|
| 00014751_001.png | 1 | 0 |
|---------------------|------------------|---------------|
| 00020318_012.png | 1 | 1 |
|---------------------|------------------|---------------|
[[CSV-файл, не содержащий функций изображения (пол пациента и положение просмотра рентгеновского изображения грудной клетки кодируются как {0,1})]
Я хочу объединить значения этих двух столбцов со сплющенным слоем CNN.
Я пробовал следующий код, но он показал ошибку.
train_set_features = train_set[['View Position','Patient Gender']]
input_features =train_set_att.values # Shape=(90771, 2)
from keras.applications import *
from keras.layers import GlobalAveragePooling2D, Dense, Dropout, Flatten,Concatenate
from keras.models import Sequential
base_model = MobileNet( include_top=False,input_shape=(224,224,3))
x = base_model.output
x = Flatten()(x) #output shape = (None,7168)
non_image_features = Input(shape=[2,], name="non_image") #output shape = (None,2)
x= concatenate([x, non_image_features]) #output shape = (None,7170)
# and a logistic layer
predictions = Dense(15, activation="sigmoid",name='visualized_layer')(x)
model = Model(inputs=[base_model.input,non_image_features], outputs=predictions)
opt = Adam(learning_rate=0.001)
model.compile(optimizer=opt, loss='binary_crossentropy',metrics=['binary_accuracy','mae'])
history = model.fit_generator([train_generator,input_features ],
validation_data=valid_generator,
steps_per_epoch=100,
validation_steps=25,
epochs =64,)
predicted_values = model.predict_generator(test_generator, steps = len(test_generator))
Это правильный способ объединения значений с сплющенный слой?