美文网首页
The Hello World of Deep Learning

The Hello World of Deep Learning

作者: 王一二_biu | 来源:发表于2020-03-22 12:04 被阅读0次

    导入库

    我们先从导入相关库开始。这里我们导入TensorFlow,并将其简称为tf来方便使用。

    然后,我们导入一个名为numpy的库,该库可以帮助我们轻松地将数据表示为列表。

    将神经网络定义为一组顺序层的框架称为keras,我们也将其导入。

    import tensorflow as tf
    import numpy as np
    from tensorflow import keras
    

    定义并编译神经网络

    下面,我们将创建最简单的神经网络。它具有1层,并且该层只有1个神经元,其输入值也只有一个。

    model = tf.keras.Sequential([keras.layers.Dense(input_shape=[1], units=1)])
    

    现在,我们开始编译神经网络。在做之前,我们必须指定两个函数,一个是损失函数,一个是优化器。

    假设我们的函数中,数字之间的关系为y=2x-1。当计算机尝试“学习”时,会做出猜测,也许认为数字之间满足y=10x+10。损失函数根据已知的正确答案来衡量猜测的答案,并衡量其执行的好坏程度。

    然后,它使用optimizer函数进行另一个猜测。基于损失函数的运行方式,它将尝试使损失最小化。到那时,也许会得到类似y=5x+5的结果,虽然此时的结果仍然很糟糕,但是更接近正确的结果。

    它将重复此操作,最终重复的数量由epochs给出。但是首先,我们要告它所要使用的方法,即对损失使用均方误差,对optimizer使用随机梯度下降方法。

    model.compile(optimizer='sgd', loss='mean_squared_error')
    

    提供数据

    接下来,我们将输入一些数据,取6组输入与输出。

    x = np.array([-1.0,  0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
    y = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
    

    训练神经网络

    训练神经网络的过程,是调用model.fit来学习x与y之间的关系。

    model.fit(x, y, epochs=100)
    

    经过上述步骤之后,我们得到了一个训练后的神经网络,它已经学习到了x与y之间隐藏的数学关系。我们使用model.predict方法来找出未知的x所对应的y。例如,如果x=10,y将会是什么?根据y=2x-1我们知道y应该是19,那么神经网络给我们的输出是多少?

    print(model.predict([10.0]))
    

    我们可以看到,预测的结果与我们期望的19非常接近。

    code

    import tensorflow as tf
    import numpy as np
    from tensorflow import keras
    
    model = tf.keras.Sequential([keras.layers.Dense(input_shape=[1], units=1)])
    model.compile(optimizer='sge', loss='mean_squared_error')
    
    x = np.array([-1.0,  0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
    y = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
    
    model.fit(x, y, epochs=100)
    
    print(model.predict([10.0]))
    

    相关文章

      网友评论

          本文标题:The Hello World of Deep Learning

          本文链接:https://www.haomeiwen.com/subject/qebmyhtx.html