Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Keras不愿意在[1,1]之外做出预测_Keras - Fatal编程技术网

为什么Keras不愿意在[1,1]之外做出预测

为什么Keras不愿意在[1,1]之外做出预测,keras,Keras,我极其精简的代码如下所示: #!/usr/bin/python3 from keras.layers import Input from keras.layers.core import Dense from keras.models import Model import numpy as np inp = Input(shape=[1]) out = Dense(units=1, activation='linear')(inp) model = Model(inputs=inp, o

我极其精简的代码如下所示:

#!/usr/bin/python3

from keras.layers import Input
from keras.layers.core import  Dense
from keras.models import Model
import numpy as np

inp = Input(shape=[1])
out = Dense(units=1, activation='linear')(inp)
model = Model(inputs=inp, outputs=out)
model.compile(loss='mean_absolute_error',
              optimizer='rmsprop')


x=np.array([[0]])
y=np.array([[42]])

model.fit(x,y,epochs=1000, verbose=False)
prediction = model.predict(x)

print(prediction)
它输出
[[1.0091327]]

该模型有两个参数:1维输出的权重和偏差。权重并不重要,因为
x
始终为0。这应该很容易训练

如果我对y使用
0.42
-0.42
而不是
42
,则它工作正常(4.2和-42不起作用)。所以我认为一定有某种形式的标准化,要么输出,要么偏向[-1,1]

有人知道这种规范化是什么,以及如何关闭它吗


(在有人告诉我不应该用神经网络做这么愚蠢的事情之前,我真正的代码做的更多。我写这个精简版本是为了清晰和调试。)

不,没有内置的规范化,这是用户的工作

您看到的是我们使用规范化的“原因”,没有规范化,优化问题会困难得多,在我运行示例后,您可以看到损失不会接近于零,而是保持在41左右

如果您做了一些更改,比如使用均方误差损失并将此示例运行50K个历元,那么您将使其收敛到零损失,并按预期输出42

初学者的一个常见错误是看预测而不先看训练损失,因为损失很高,这意味着预测是错误的