前段时间我找到了解决方案。我一直在研究函数逼近(在线性回归中)一段时间。我是这样做的:
神经网络已被证明是通用函数逼近器。因此,即使是单个隐藏层也足以逼近一个简单的加法函数(即使是有点复杂的函数,如Sine和任何随机 CONTINUOUS wiggly 函数也已被逼近)
首先,我使用了像 TensorFlow 和 Keras 这样的高级 API 并在这里实现了它
该模型在数据(输入-输出对)上进行了训练
R = np.array([-4, -10, -2, 8, 5, 22, 3], dtype=float)
B = np.array([4, -10, 0, 0, 15, 5, 1], dtype=float)
G = np.array([0, 10, 5, 8, 1, 2, 38], dtype=float)
Y = np.array([0, -10, 3, 16, 21, 29, 42], dtype=float)
并训练如下:
#Create a hidden layer with 2 neurons
hidden = tf.keras.layers.Dense(units=2, input_shape=[3])
#Create the output (final) layer which symbolises value of **Y**
output = tf.keras.layers.Dense(units=1)
#Combine layers to form the neural network and compile it
model = tf.keras.Sequential([hidden, output])
model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.1))
history = model.fit(RBG,Y, epochs=500, verbose=False)
该模型在大约 50 个 epoch 内收敛
此外,我仅使用 C/C++ 实现了相同的功能,并使用 GNU plot 来可视化结果。