Мне трудно построить нейронную сеть автоэнкодера для поиска выбросов в одном столбце текста. Я использую 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']