Кластеризация без надзора для многомерных данных в модели Keras?

В настоящее время я обучаю автоэнкодера изучать представления функций с помощью встраиваний. Моя конечная цель - сгруппировать изученные представления и масштабировать их до трех измерений для визуализации. Моя проблема в том, что я не знаю, как изучать соседей или кластеры в модели Keras, которая выводит 3D-тензоры. Моя модель определяется как таковая

      model = Sequential()
model.add(embedding_layer)
model.add(LSTM(100, activation='relu', input_shape=(50,100), return_sequences=True))
model.add(keras.layers.Dropout(rate=0.2))
model.add(LSTM(200, activation='relu', return_sequences=False))
model.add(RepeatVector(50))
model.add(LSTM(50, activation='relu', return_sequences=True))
model.add(BatchNormalization())
model.add(LSTM(200, activation='relu', return_sequences=True))
model.add(LSTM(300, activation='relu', return_sequences=True))
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(100)))

Это занимает список из 100 000, 50 предложений, потому что для каждого предложения у меня есть последовательность из 50 слов.

Чтобы получить свои заученные представления, я подбираю модель на основе данных, которые она сама, и снова предсказываю на тех же данных, например:

      history = model.fit(
    x=augmented[0:50_000],
    y=emb_augmented[0:50_000],
    batch_size=256,
    epochs=1)

feature_vectors = model.predict(augmented[:10000], batch_size=batch_size, verbose=1)

  • Обратите внимание, что я пытаюсь предсказать вложения слов, потому что у меня есть слой встраивания для ввода.

Форма вывода feature_vectors в этом случае (1000, 50, 100), которая представляет собой 1000 предложений длиной 50 со 100 размерными векторами для каждого слова.

Есть ли способ плавно изучать кластеры во время обучения в Keras, а затем назначать каждому предложению метку, к какому кластеру они должны принадлежать?

0 ответов

Другие вопросы по тегам