Сеть автоэнкодеров не дает ожидаемых результатов - PullRequest
0 голосов
/ 17 апреля 2019

Мне трудно построить нейронную сеть автоэнкодера для поиска выбросов в одном столбце текста. Я использую Keras и Tensorflow GPU. Я застрял, я не знаю, куда идти.

Вот фрагмент моего входного текста:

ic_select_all_white_36dp.png
ic_settings_bluetooth_black_24dp.png
ic_settings_bluetooth_white_36dp.png
ic_settings_grey600_48dp.png
ic_settings_remote_white_24dp.xml
ic_settings_remote_white_48dp.png
ic_settings_white_24dp.xml
ic_settings_white_48dp.png
ic_show_chart_black_24dp.xml
ic_sort_white_24dp.xml
ic_star_grey600_24dp.png
ic_star_white_24dp.xml
ic_usb_white_24dp.xml
ic_video_library_white_24dp.xml
ic_warning_24dp.xml
ic_xda_grey600_24dp.png

Весь мой код выглядит следующим образом:

import sys
from keras import Input, Model
import matplotlib.pyplot as plt
from keras.layers import Dense
from keras.preprocessing.text import Tokenizer
import numpy as np

from google.colab import drive
drive.mount('/content/drive')

with open('/content/drive/My Drive/Colab Notebooks/drawables.txt', 'r') as arquivo:
    dados = arquivo.read().splitlines()

tokenizer = Tokenizer(filters='', nb_words=None)
tokenizer.fit_on_texts(dados)

x_dados = tokenizer.texts_to_matrix(dados, mode="count")
#x_dados = tokenizer.texts_to_sequences(dados, mode="count")

tamanho = len(tokenizer.word_index) + 1
tamanho_comprimido = int(tamanho/1.25)

x = Input(shape=(tamanho,))

# Encoder
hidden_1 = Dense(tamanho_comprimido, activation='relu')(x)
h = Dense(tamanho_comprimido, activation='relu')(hidden_1)

# Decoder
hidden_2 = Dense(tamanho, activation='relu')(h)
r = Dense(tamanho, activation='sigmoid')(hidden_2)

autoencoder = Model(input=x, output=r)

autoencoder.compile(optimizer='adam', loss='mse')

history = autoencoder.fit(x_dados, x_dados, epochs=10, shuffle=False)

plt.plot(history.history["loss"])
plt.ylabel("Loss")
plt.xlabel("Epoch")
plt.show()

encoded = autoencoder.predict(x_dados)

resultado = tokenizer.sequences_to_texts(encoded)

#encoded_argmax  = np.argmax(encoded, axis=1)
encoded_argmax  = np.argmax(encoded, axis=1)

text = tokenizer.sequences_to_texts([encoded_argmax])


from pprint import pprint


pprint(encoded_argmax)

pprint(text)

Я использую Google Collab, код запускается, он тренируется, я могу построить график с эпохой и все, но когда я делаю свою последнюю команду, отпечаток выведенного текста в последовательность, я получаю другой результат каждый раз, когда я бегу, и результаты в значительной степени неточны, я не знаю, что я делаю неправильно.

Вывод моего текста (текста) ниже моего вопроса, потому что он очень большой.

Что я нахожу странным, так это то, что мой ввод - это один столбец текста, а мой вывод состоит из нескольких столбцов.

Я потерян, я не знаю, куда идти.

['item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml '
 'item_doc_grid.xml item_doc_grid.xml item_doc_grid.xml']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...