Keras回归近似函数(目标:损失< 1e-7)

时间:2018-02-07 13:34:36

标签: neural-network keras function-approximation

我正在研究近似于函数f(X)= y的神经网络,其中X是[-inf,+ inf]中的向量[x0,...,xn]和y。该近似函数需要具有1e-8左右的精度(误差之和)。事实上,我需要我的神经网络来适应。

X由间隔-500和500中的随机点组成。在将这些点放入输入层之前,我将它们在[0,1]之间归一化。

我使用keras如下:

dimension = 10 #example

self.model = Sequential()
self.model.add(Dense(128, input_shape=(dimension,), init='uniform',  activation='relu'))
self.model.add(Dropout(.2))
self.model.add(Activation("linear"))
self.model.add(Dense(64, init='uniform', activation='relu'))
self.model.add(Activation("linear"))
self.model.add(Dense(64, init='uniform', activation='relu'))
self.model.add(Dense(1))

X_scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))
y_scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))

X_scaled = (X_scaler.fit_transform(train_dataset))
y_scaled = (y_scaler.fit_transform(train_labels))

self.model.compile(loss='mse', optimizer='adam')
self.model.fit(X_scaled, y_scaled, epochs=10000, batch_size=10, verbose=1)

我尝试了不同的NN,首先[n] - > [2] - > [1]具有Relu激活功能,则[n] - > [128] - > [64] - > [1]。 我尝试了SGB优化器,然后慢慢将学习速度从1e-9提高到0.1。 我也试过没有标准化数据,但在这种情况下,损失非常高。

我当前设置的最佳损失(MSE)为0.037,但我远离我的目标(1e-8)。

首先,我想知道我做错了什么。我的方式好吗? 如果没有,我怎样才能达到目标?

非常感谢你

尝试#2

我尝试了这个新配置:

model = Sequential()
model.add(Dense(128, input_shape=(10,), init='uniform', activation='relu'))
model.add(Dropout(.2))
model.add(Dense(64, init='uniform', activation='relu'))
model.add(Dense(64, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))

在50个元素的样本上,batch_size在10和100000个时期。 我在1e-4左右得到了损失。

尝试#3

model.add(Dense(128, input_shape=(10,), activation='tanh'))
model.add(Dense(64,  activation='tanh'))
model.add(Dense(1, activation='sigmoid'))

=的batch_size 1000 历元= 1E5

结果:1​​.e-7附近的损失

0 个答案:

没有答案