【问题标题】:Non-linear regression with neural networks神经网络的非线性回归
【发布时间】:2021-01-03 10:26:37
【问题描述】:

如何创建一个神经网络来解决例如:2 * x ** 3 + 4 * x + 8 + 随机噪声? 我可以使用 sklearn 的 LinearRegression 轻松做到这一点,但我希望能够在我不知道函数是否为 log/exp/poly/etc 的多元样本中实现这一点。 谢谢! 阿什坎

【问题讨论】:

    标签: python tensorflow neural-network non-linear-regression


    【解决方案1】:

    神经网络中的非线性可以通过简单地具有非线性激活函数的层来实现,例如(relu)。例如:

    from tensorflow.keras import Sequential
    from tensorflow.keras.layers import Dense
    
    model = Sequential()
    model.add(Dense(10, activation='relu', kernel_initializer='he_normal', input_shape=(n_features,)))
    model.add(Dense(1))
    
    model.compile(optimizer='adam', loss='mse')
    model.fit(X_train, y_train, epochs=10, batch_size=16, verbose=0)
    

    只需要再增加 3 层 - 谢谢 Tony!

    【讨论】:

    • relu 仍然有点线性(relu(x)=max(0, x))。它不可能看到 x 的 3 度。
    • @Ashkan 可以使用多层
    • @NicolasGervais ,它在 10,000 个 epoch(4 层密集/relu)之后完成。谢谢!