Tensorflow 当我更改输出层的激活函数时,模型不会';我学不会

Tensorflow 当我更改输出层的激活函数时,模型不会';我学不会,tensorflow,keras,Tensorflow,Keras,我正在尝试制作一个用于情感分析的二元分类器,并使用TensorFlow中基本文本分类教程中的模型,这是下一个: model = tf.keras.Sequential([ layers.Embedding(max_features + 1, embedding_dim), layers.Dropout(0.2), layers.GlobalAveragePooling1D(), layers.Dropout(0.2), layers.Dense(1)]) 该模型的二进制精度

我正在尝试制作一个用于情感分析的二元分类器,并使用TensorFlow中基本文本分类教程中的模型,这是下一个:

model = tf.keras.Sequential([
  layers.Embedding(max_features + 1, embedding_dim),
  layers.Dropout(0.2),
  layers.GlobalAveragePooling1D(),
  layers.Dropout(0.2),
  layers.Dense(1)])
该模型的二进制精度为80%。然而,当我将最后一层(密集层)的激活函数改为sigmoid函数时,模型没有学习,二进制精度低于40%

model = tf.keras.Sequential([
  layers.Embedding(max_features + 1, embedding_dim),
  layers.Dropout(0.2),
  layers.GlobalAveragePooling1D(),
  layers.Dropout(0.2),
  layers.Dense(1, activation='sigmoid')])

为什么会发生这种情况?

这是因为当您不指定激活函数时,
层。Dense
使用默认的激活函数,即
线性
激活函数,您可以阅读更多有关不同激活函数之间的差异及其工作方式的信息。

这是因为当您不指定激活函数时,
层。Dense
使用默认激活函数,即
线性
激活函数,根据,您可以阅读更多有关不同激活函数之间的差异及其工作方式的信息。

编译模型时您指定了什么样的损失函数?编译模型时您指定了什么样的损失函数?这是事实,但它没有解释为什么默认线性函数的性能优于sigmoid。sigmoid函数应该具有相同或更好的性能,因为它返回的值介于0和1之间。这是事实,但它没有解释为什么默认线性函数的性能优于sigmoid。sigmoid函数应具有相同或更好的性能,因为它返回的值介于0和1之间。