我对神经网络很陌生,我试图用python建立一个小型网络。但是,由于我是新手,我不知道如何扩展和比较输出。所以这是我的问题。
我给出的输入是这样的列表
input = [0,0,1]
desired output = 4
所以我做了所有神经网络编码,在数据通过网络之后,网络使用sigmoid函数输出-1,+ 1之间的数字。如何缩放输出以使用所需的输出4来计算误差?
这可能是一个愚蠢的问题,但我是机器学习的新手。感谢
答案 0 :(得分:0)
这不是一个愚蠢的问题。您想要做的是将您想要的输出归一化到您的网络输出的范围内(或反向并缩放网络输出,但规范是反过来的。)
因此,请将您的数据通过以下函数:
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)]
答案 1 :(得分:0)
在这种特定情况下,您可能需要线性输出节点(即不是sigmoid)。假设这是一个回归问题(如果不是,请参见下文)。通常你想要一个线性输出节点,如果它不应该是更难的'让NN预测更高的价值。
大多数机器学习模块允许您设置此项。
Sigmoid输出节点主要用于分类问题(因为神经网络越来越难以预测接近1的值,这是100%确定的类别)
如果这是一个分类问题,通常NN对每个类的输出节点表现更好(因此对每个类使用sigmoid输出节点,其输出值对应于NN认为样本的机会)属于那个特定的类。)