Tensorflow 当我更改输出层的激活函数时,模型不会';我学不会
我正在尝试制作一个用于情感分析的二元分类器,并使用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)]) 该模型的二进制精度
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之间。