38
правок
Изменения
→Keras
'''from''' keras.layers '''import''' LSTM
'''from''' keras.datasets '''import''' imdb
'''def''' f1(y_true, y_pred):
'''def''' recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives / (possible_positives + K.epsilon())
return recall
'''def''' precision(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
precision = precision(y_true, y_pred)
recall = recall(y_true, y_pred)
return 2*((precision*recall)/(precision+recall+K.epsilon()))
<font color="green"># Устанавливаем seed для обеспечения повторяемости результатов</font>
model.compile(loss = <font color="red">'binary_crossentropy'</font>,
optimizer = <font color="red">'adam'</font>,
metrics = [<font color="red">'accuracy'</font>, <font color="red">'f1'</font>])
<font color="green"># Обучаем нейронную сеть (данные для обучения, ответы к данным для обучения, количество рецензий после анализа которого будут изменены веса, число эпох обучения, тестовые данные, показывать progress bar или нет)</font>
scores = model.evaluate(X_test, y_test, batch_size = <font color="blue">64</font>)
print(<font color="red">'Точность на тестовых данных: %.2f%%'</font> % (scores[1] * <font color="blue">100</font>))
print(<font color="red">'F1 на тестовых данных: %.2f%%'</font> % (scores[2] * <font color="blue">100</font>))
=== TensorFlow ===