我正在尝试在Tensorflow中构建一个模型,该模型可以预测任何x输入的 x ^ 2 。到目前为止,我的模型在训练数据间隔[-100,100]内具有相当不错的准确性,但是对于超出此范围的任何数据都表现出色。
经过一些谷歌搜索和matplotlibing之后,很明显,神经网络在超出所示训练样本的x ^ 2曲线之后很难。
任何人都可以解释一下为什么神经网络在逼近高阶函数方面如此糟糕吗? 可以教网络遵循/逼近x ^ 2曲线的斜率吗?
代码:
input_num = np.arange(-100, 100, 1)
square = np.square(input_num)
l0 = tf.keras.layers.Dense(units=1024, input_shape=[1], activation='relu')
l1 = tf.keras.layers.Dense(units=512, activation='relu')
l2 = tf.keras.layers.Dense(units=512, activation='relu')
l3 = tf.keras.layers.Dense(units=512, activation='relu')
l4 = tf.keras.layers.Dense(units=256, activation='relu')
l5 = tf.keras.layers.Dense(units=256, activation='relu')
l6 = tf.keras.layers.Dense(units=1, activation='linear')
model = tf.keras.Sequential([l0, l1, l2, l3, l4, l5, l6])
model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.0005))
model.fit(input_num, square, epochs=5000, verbose=True, batch_size=64)