Как реализовать этот дистрибутив в моей модели? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть 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. Итак, мой второй вопрос: возможно ли присвоить эти веса моей основной модели, чтобы получить эти значения напрямую или способ обосновать это назначение?или я должен сохранить результат от моей первой мысли, потому что это "правильно"?

...