小编Kri*_*dhi的帖子

深度学习是否适合在训练范围之外(外推)拟合简单的非线性函数?

我正在尝试创建一个简单的基于深度学习的模型来进行预测,y=x**2 但是看起来深度学习无法学习其训练集范围之外的一般功能。

凭直觉,我可以认为神经网络可能无法拟合y = x ** 2,因为输入之间不涉及乘法。

请注意,我并不是在问如何创建适合的模型x**2。我已经实现了。我想知道以下问题的答案:

  1. 我的分析正确吗?
  2. 如果对1的回答为是,那么深度学习的预测范围不是很有限吗?
  3. 在训练数据范围之内和之外,是否存在更好的算法来预测y = x ** 2之类的函数?

完成笔记本的路径:https : //github.com/krishansubudhi/MyPracticeProjects/blob/master/KerasBasic-nonlinear.ipynb

培训输入

x = np.random.random((10000,1))*1000-500
y = x**2
x_train= x
Run Code Online (Sandbox Code Playgroud)

输入数据

训练守则

def getSequentialModel():
    model = Sequential()
    model.add(layers.Dense(8, kernel_regularizer=regularizers.l2(0.001), activation='relu', input_shape = (1,)))
    model.add(layers.Dense(1))
    print(model.summary())
    return model

def runmodel(model):
    model.compile(optimizer=optimizers.rmsprop(lr=0.01),loss='mse')
    from keras.callbacks import EarlyStopping
    early_stopping_monitor = EarlyStopping(patience=5)
    h = model.fit(x_train,y,validation_split=0.2,
             epochs= 300,
             batch_size=32,
             verbose=False,
             callbacks=[early_stopping_monitor])


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_18 (Dense)             (None, 8) …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network deep-learning non-linear-regression keras

6
推荐指数
1
解决办法
368
查看次数