TensorFlow实现函数逼近神经网络输出层单元数设置是否正确
结论
你的输出层单元数设置是错误的,同时输入层的input_shape参数也设置错误,二者都是混淆了样本总数和单条样本的特征维度的概念导致的。
错误原因说明
你要拟合的是单变量函数 y=0.9x^3 + 2x^2 + 12,单条样本的输入只有1个特征(也就是x的值),输出也只有1个值(对应的y值),50000是你准备的样本总数量,属于训练时的批量维度,不需要写入网络的输入/输出维度配置中。
你当前的配置相当于要求网络接收一条50000维的输入,输出一条50000维的结果,完全不符合你的拟合需求。
正确的网络结构代码
model = Sequential() # 输入层:单条样本输入维度为1,第一隐藏层12个单元 model.add(Dense(12, input_shape = (1,), activation = 'relu')) model.add(Dense(8, activation = 'relu')) model.add(Dense(4, activation = 'relu')) # 输出层:单条样本输出维度为1,用线性激活适配回归任务 model.add(Dense(1, activation = 'linear'))
训练数据适配要求
训练前你需要把所有样本整理为符合输入要求的格式:
- 所有x值整理为形状为
(50000, 1)的数组 - 所有对应的y值整理为形状为
(50000, 1)的数组
直接调用model.fit()传入上述两组数据即可,训练时框架会自动处理批量维度,不需要在网络结构中声明样本总数。
内容的提问来源于stack exchange,提问作者user12441225
相关产品推荐
相关产品推荐

