Как Keras работает с сигмовидной функцией и вероятностями - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь классифицировать текст по основному положению, положительному или отрицательному, с помощью Кераса. Однако, хотя код работает, я не совсем понимаю две вещи.

1.Как работает слой Dense с функцией Sigmoid, чтобы классифицировать текст, учитывая, что из того, что я понял, " sigmoid "функция возвращает число от 0 до 1? Считает ли Keras по умолчанию 0 отрицательных и 1 положительных?

2. При использовании binary_crossentropy, какую разницу мы точно вычисляем? Я знаю, что разница между основной истиной и нашим предсказанием. Но какой именно?

Это мой код:

train_validation_split = tfds.Split.TRAIN.subsplit([6, 4])
(train_data, validation_data), test_data = tfds.load(
    name="imdb_reviews",
    split=(train_validation_split, tfds.Split.TEST),
    as_supervised=True)

train_examples_batch, train_labels_batch = next(iter(train_data.batch(7)))
print(train_examples_batch)
print(train_labels_batch)
embedding = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(embedding, input_shape=[],
                           dtype=tf.string, trainable=True)
model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(20, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.summary()
model.compile(optimizer='adam',
              loss='binary_crossentropy', 
              metrics=['accuracy'])  
model.fit(train_data.shuffle(10000).batch(512),
                    epochs=25,
                    validation_data=validation_data.batch(512),
                    verbose=1)

results = model.evaluate(test_data.batch(512), verbose=2)

for name, value in zip(model.metrics_names, results):
  print("%s: %.3f" % (name, value))

Большое вам спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...