У меня есть NN-модель, которая классифицирует операторы между 3 категориями [-1, 0, 1]
stop = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=15, verbose=1, mode='auto', restore_best_weights=True)
model = Sequential()
model.add(Embedding(num_words, EMBEDDING_DIM,
input_length=MAX_SEQUENCE_LENGTH))
model.layers[0].set_weights([embedding_matrix])
model.layers[0].trainable = False
model.add(Dense(300,kernel_regularizer=regularizers.l1(0.000001)))
model.add(Dropout(0.35))
model.add(Dense(200,kernel_regularizer=regularizers.l1(0.000001)))
model.add(Dropout(0.35))
model.add(Dense(100,kernel_regularizer=regularizers.l1(0.000001)))
model.add((LSTM(50, dropout=0.1, recurrent_dropout=0.1)))#, kernel_regularizer=regularizers.l1(0.00001))))
model.add(Dense(1,kernel_regularizer=regularizers.l1(0.000001)))
model.add(Activation("tanh"))
model.compile(loss="mse", optimizer="rmsprop",
metrics=["accuracy"])
После обучения я использую model.predict (), чтобы «предсказать» новые значения, и я получил это
array([[ 0.82085645],
[ 0.8304224 ],
[ 0.8198626 ],
[ 0.8128166 ],
[ 0.1621628 ],
[ 0.74597526],
[-0.59259003],
[-0.57140785]], dtype=float32)
Хорошо, вот мой первый вопрос.Как мне это интерпретировать?Моя первая мысль была
predictioncm = model.predict(texts_test)
predictioncm1 = []
for p in predictioncm:
if p<=0.5 and p>=-0.5:
predictioncm1.append(0)
elif p>0.5:
predictioncm1.append(1)
else:
predictioncm1.append(-1)
Но дело в том ... когда я присваиваю:
predictioncm = model.predict_proba(texts_test)
predictioncm1 = []
for p in predictioncm:
if p<=0.7999 and p>=0:
predictioncm1.append(0)
elif p>0.7999:
predictioncm1.append(1)
else:
predictioncm1.append(-1)
Это "подходит" идеально подходит к желаемому результату (утверждения оттестовый набор, поэтому я знаю результат).Таким образом, результаты полностью искажены до 1. Итак, мой второй вопрос: возможно ли присвоить эти веса моей основной модели, чтобы получить эти значения напрямую или способ обосновать это назначение?или я должен сохранить результат от моей первой мысли, потому что это "правильно"?