Ранее я опубликовал вопрос о написанном мной сценарии TensorFlow, который не работал должным образом. Я сузил проблему и удалил старый комментарий, надеюсь, за ним легче следовать. Я в основном пытаюсь следовать классическому c примеру предсказания комментариев mov ie к IMDB, которые являются либо положительными, либо отрицательными. Я рассмотрел множество вариантов этого, и моя главная проблема в том, что моя модель возвращает одно и то же предсказание метки (метка - это настроение, положительное / отрицательное). Я на 99% уверен, что проблема в сборке / компиляции моей модели:
NUM_WORDS = 10000
SEQ_LEN = 512
EMBEDDING_SIZE = 300
BATCH_SIZE = 500
EPOCHS = 20
**model = tf.keras.Sequential([
tf.keras.layers.Embedding(NUM_WORDS, 32, input_length = BATCH_SIZE),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(250, activation = 'relu'),
tf.keras.layers.Dense(1, activation = 'sigmoid')])**
model.summary()
model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
es = tf.keras.callbacks.EarlyStopping(monitor = 'val_accuracy', mode = 'max')
callbacks = [es]
history = model.fit(train_seqs, train_df['adq'].values,
batch_size = BATCH_SIZE,
epochs = EPOCHS,
validation_split = 0.2,
callbacks = callbacks)
model.evaluate(test_seqs, test_df['adq'].values)
model.save('model.ps1')
with open('tokenizer.pickle', 'wb') as handle:
pickle.dump(tokenizer, handle, protocol = pickle.HIGHEST_PROTOCOL)
del model
del tokenizer
loaded_model = tf.keras.models.load_model('model.ps1')
with open('tokenizer.pickle', 'rb') as f:
loaded_tokenizer = pickle.load(f)
def prepare_predict_data(tokenizer, comments):
seqs = tokenizer.texts_to_sequences(comments)
seqs = tf.keras.preprocessing.sequence.pad_sequences(seqs, maxlen = SEQ_LEN, padding = 'post')
return seqs
Моя предварительная обработка текста, токенизация и заполнение - все работает, и у меня есть около 38000 комментариев в моем обучающем наборе, каждый с длиной последовательности 512, опять же, заполнение выглядит хорошо. Можете ли вы дать мне знать, где я иду не так? Большое спасибо за вашу помощь!