tkinter+tensorflow,利用神经网络拟合函数可视化小程序

    写这个小程序的目的有2个:

    1. 向同事证明神经网络可以拟合函数;

    2. 可视化地感受不同参数对拟合过程的影响。

    下图是用tkinter做的GUI界面,请忽略丑陋的布局。

    1. 网络结构:

    理论认为:当隐藏层节点数足够多时,只需三层BP网络即可逼近任何连续函数。

    程序中网络结构十分简单:1输入,1输出,中间隐藏层的节点数默认为10,为可调参数,目标函数为二次函数,数据点加了噪音。

    2. 当数据过少时,容易出现过拟合:

    当数据点的个数只有4个时,为了使得loss最小,神经网络经过了这四个点,学习结果为3个分段函数,与目标值二次函数存在较大出入,出现了明显的过拟合。


   3. 学习率太大时,模型可能无法收敛:

    4. 模型并不是越大越好:

    当神经网络隐藏层节点数由5变为50时,直观上看:拟合结果差别并不大。

    这里其实就涉及到一个问题:精度和速度之间的平衡。

    未来还可以可视化的观察:

    a. 不同优化器,如Adam,rmsprop,SGD的差别;

    b. 异常值的加入对结果的影响;

    ……

猜你喜欢

转载自blog.csdn.net/weixin_41713230/article/details/80921445