python - Keras 如何处理 sigmoid 函数和概率
问题描述
我正在尝试通过 Keras 的主要情绪(正面或负面)对文本进行分类。但是,即使代码有效,我也不完全理解两件事。
1.Sigmoid函数的Dense层如何工作以分类文本,考虑到据我了解,“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))
太感谢了!
解决方案
推荐阅读
- reactjs - 如何自动在我的表格的每一行中输入一个输入?
- firebase - 部署错误。构建失败:src/index.js 不存在;
- python - 你会如何在 Python 的一个范围内随机改变一个浮点数?
- php - 如何用扩展类中的另一个方法覆盖类中的方法
- c++ - 类似 JS 的反引号字符串文字
- mongodb - 将 'expire_at' 字段设置为 null 以取消 MongoDB 中的过期是否有效?
- c# - 如何使用 Blazor 服务器端制作渐进式 Web 应用程序?
- java - 如果选择了先前的选择字段选项,则显示新的选择字段
- c# - GetSchemaTable 中的 IsAliased 始终为空
- php - 使用 laravel 8 ajax 记录未插入数据库