我有多个输入(图像+数字数据),并且我使用带有解码器层的自动编码器,但我不知道如何将这些输入用于带有 PCA 的 k-means。
这是我的代码:
#Multiple inputs
image_input = Input((224, 224, 3))
vector_input = Input((1,))
#Encoder and decoder
conv_layer = Conv2D(32, (3,3))(image_input)
# More layer here ......
flat_layer = Flatten()(conv_layer)
concat_layer= Concatenate()([vector_input, flat_layer])
output = Dense(1)(concat_layer)
model = Model(inputs=[image_input, vector_input], outputs=output)
model.save("model_multiple_inputs")
images = []
for image in image_paths:
img = cv2.imread(path + "/" + image)
images.append(img)
images = np.float32(images)#
images /= 255
numerical_data = []
csv_file = "info.csv"
for img_name in image_paths:
with open(csv_file, 'r') as read_obj:
csv_reader = reader(read_obj)#, delimiter='\t')
next(csv_reader, None)
# Iterate over each row in the csv using reader object
for row in csv_reader:
if img_name.split("_")[0] == row[0]:
numerical_data.append(row[8])
numerical_data = np.float32(numerical_data)
model1 = keras.models.load_model('model_multiple_inputs',compile=False)
pred1 = model1.predict([images,numerical_data])
这是只有一个输入的模型的 PCA 和 k-means,我不知道如何对多个输入使用相同的实现。
temp_img = pred1.reshape(images.shape[0], -1)
#PCA = Linear dimensionality reduction
pca = PCA(n_components=None, random_state=728)
df = pca.fit_transform(temp_img)
model = KMeans(n_clusters=7, random_state=728)
label = model.fit_predict(df)
我的想法完全错了吗?如果您能在这件事上帮助我,我将不胜感激?