【发布时间】:2020-11-21 14:09:41
【问题描述】:
这个模型的想法是它通过神经网络学习执行两个特征的乘法,所以我创建了一个训练数据集,其中包含从 0 到 100 的随机数的乘法。因为这个想法是它学习乘法在任何情况下,我都创建了 a) 随机数最大为 100 和 b) 随机数从 1000 到 5000 的训练数据。
我为此创建了下面的神经网络,但是它与测试数据“b”不太吻合。
model = tf.keras.Sequenenter code heretial()
model.add(tf.keras.layers.Dense(units = 2,input_dim = 2))
model.add(tf.keras.layers.Dropout(0.1))
model.add(tf.keras.layers.Dense(units = 64,activation='relu'))
model.add(tf.keras.layers.Dropout(0.1))
model.add(tf.keras.layers.Dense(units = 32,activation='relu'))
model.add(tf.keras.layers.Dense(units = 1))
model.compile(optimizer='adam', loss = 'mean_squared_error')
与“a”测试数据相比,预测是有意义的。但是与测试数据“b”相比,它呈现出类似的曲线,但值非常遥远。
如果你想看我的完整代码: https://colab.research.google.com/drive/1rdAhZnHlxyXHHDF2D_grog05oDwYbXHa?usp=sharing
您能否帮助我的模型很好地泛化到比训练数据大得多的数据? 谢谢!
【问题讨论】:
-
你好,你在规范化你的数据吗?
-
是的,我用 MinMaxScaler () 和 RobustScaler () 试过了。还有其他关于标准化的建议吗?谢谢
-
您通常不能假设神经网络在训练数据范围之外“正常工作”。如果您需要增加功能,我建议您手动完成。
标签: python tensorflow keras neural-network