0

我有多个输入(图像+数字数据),并且我使用带有解码器层的自动编码器,但我不知道如何将这些输入用于带有 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)

我的想法完全错了吗?如果您能在这件事上帮助我,我将不胜感激?

4

0 回答 0