[英]How to work with an output of a neural network?
我是神经网络的新手,我正在尝试使用python建立一个小型网络。 但是由于我是新手,所以我不知道如何缩放和比较输出。 所以这是我的问题。
我提供的输入是这样的列表
input = [0,0,1]
desired output = 4
因此,我进行了所有的神经网络编码,数据通过网络传递后,网络使用S型函数输出了-1,+ 1之间的数字。 如何缩放输出以计算期望输出为4的误差?
这可能是一个愚蠢的问题,但是我是机器学习的新手。 谢谢
这不是一个愚蠢的问题。 您想要做的是将所需的输出规格化在网络输出的范围内(或反比例放大网络输出,但范数相反)。
因此,将数据通过类似以下的函数:
def normalize_values(list_of_values, desired_min=-1., desired_max=1.):
min_val = min(list_of_values)
max_val = max(list_of_values)
range = max_val - min_val
scale = (desired_max-desired_min)/range
return [((x-min_val)*scale)+desired_min for x in list_of_values)]
在这种特定情况下,您可能需要线性输出节点(即非S型)。 假设这是一个回归问题(如果不是,请参见下文)。 通常,如果不希望NN预测更高的值“更难”,则需要一个线性输出节点。
大多数机器学习模块都允许您进行设置。
Sigmoid输出节点对于分类问题最有用(因为神经网络越来越难以预测值接近1,这是该类的100%确定性)
如果这是一个分类问题,通常NN在每个类别的输出节点上表现更好(因此,对于每个类别使用S型输出节点,其输出值对应于NN认为样本属于该特定类别的机会)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.