<p>听起来像是在执行回归任务,因为您将最终输出描述为“未转换的实际值(y)(可以是任何数字,因为它不受Relu激活函数的约束)。”</p>
<p>在这种情况下,你不会在神经网络的最后一个输出层上使用激活函数,因为正如你所指出的,预测并不打算被限制在实数的任何特定激活区域。。。它可以是任意实数(模型将使用损失函数的梯度来调整网络早期各层的参数,以达到创建某些“任意数”最终输出值的精度)</p>
<p>例如,请参见<a href="https://www.tensorflow.org/tutorials/keras/basic_regression#the_model" rel="nofollow noreferrer">Basic Regression</a>TensorFlow Keras教程。从模型图层定义中可以看到:</p>
<pre><code>def build_model():
model = keras.Sequential([
layers.Dense(64, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae', 'mse'])
return model
</code></pre>
<p>它使用的是均方误差损失,最后一层只是一个普通的<code>Dense(1)</code>值,没有激活</p>
<p>如果输出是二进制分类或多标签分类预测,则仍将对最后一层应用激活,并将值转换为相对分数,该分数指示模型对每个类别的预测</p>
<p>例如,如果你想预测一个4类预测任务的标签,你的输出层应该是<code>Dense(4, activation=tf.nn.softmax)</code>,其中softmax激活将这4个神经元的原始神经元值转换成相对分数</p>
<p>在这种情况下,通常会将得分最高的输出神经元与预测的类别标签相关联。然而,分类损失函数,如交叉熵损失,将利用所有神经元得分的相对值作为根据准确预测程度分配损失的方法,而不是0-1损失,因为0-1损失将为任何错误预测提供最大损失,不管离正确有多远</p>