我试图把一组数字转换成sigmoid:
actualarray = {
'open_cost_1':{
'cost_matrix': [
{'a': 24,'b': 56,'c': 78},
{'a': 3,'b': 98,'c':1711},
{'a': 121,'b': 12121,'c': 12989121},
]
},
'open_cost_2':{
'cost_matrix': [
{'a': 123,'b': 1312,'c': 1231},
{'a': 1011,'b': 1911,'c':911},
{'a': 1433,'b': 19829,'c': 1132},
]
}
}
其中每个cost_matrix
中的每个dict列表中的每个数字通过不同的sigmoid函数进行规范化:
但是,当我运行这个程序时,我得到:
RuntimeWarning: overflow encountered in exp
return ((np.exp(b+m*v) / (1 + np.exp(b+m*v)))*2)-1
RuntimeWarning: invalid value encountered in double_scalars
return ((np.exp(b+m*v) / (1 + np.exp(b+m*v)))*2)-1
阵列变成:
{
'open_cost_2': {
'cost_matrix': [
{
'a': 123,
'c': 1231,
'b': 1312
},
{
'a': 1011,
'c': 911,
'b': 1911
},
{
'a': 1433,
'c': 1132,
'b': 19829
}
],
'normalised_matrix_sigmoid': [
{
'a': 1.0,
'c': nan,
'b': nan
},
{
'a': nan,
'c': nan,
'b': nan
},
{
'a': nan,
'c': nan,
'b': nan
}
]
},
'open_cost_1': {
'cost_matrix': [
{
'a': 24,
'c': 78,
'b': 56
},
{
'a': 3,
'c': 1711,
'b': 98
},
{
'a': 121,
'c': 12989121,
'b': 12121
}
]
}
}
注意,每个代价总是大于0,因此我在sigmoid函数中乘以2减去1。在
我怎样才能适应这个错误呢?在
正如警告所述,sigmoid函数实现中的指数溢出。发生这种情况时,函数返回
nan
:您可以使用^{} ,而不是用
^{pr2}$exp
来编写sigmoid函数。它可以正确地处理非常大的参数。在检查它在不溢出的情况下返回的
sigmoid
函数是否相同:关于sigmoid函数的另一个问题,请参阅Numpy Pure Functions for performance, caching。在
相关问题 更多 >
编程相关推荐