神经网络学习笔记(3):Keras

    xiaoxiao2023-10-29  170

    Keras 中的其他激活函数:

    model.add(Activation('sigmoid'))

    model.add(Activation('softmax'))

    model.add(Activation('relu'))

    model.add(Activation('tanh'))

     

    梯度下降->随机梯度下降:

    如果每次都用所有的数据下降一个步长,很费内存

    如果数据分布合理,每次使用一部分数据就可以告诉我们梯度

    在 Keras 中很容易实现随机梯度下降。我们只需按以下命令在训练流程中指定批次大小,这里,我们将数据分成 100 批。

    model.fit(X_train, y_train, epochs=1000, batch_size=100, verbose=0)

     

    学习速率:

    学习速率大,step大

    学习速率小,step小

    经验:如果模型不行,降低学习速率

     

    解决局部最低点:

    使用动量,动量是在0到1之间的常量β,使很久之前的步长比近期发生的步长作用要小

     

    一些误差函数:

    Everest

    Kikimanjerror

    Reinerror

    Ves-oops-vius

    Eyjafvillajokull

     

    评价模型:

    准确率、精度、召回率

    ROC曲线、受试者工作特性曲线

    ROC曲线下的面积越接近1,模型越好

     

    用 Keras 构建神经网络:

     

    序列模型:

    from keras.models import Sequential

    #Create the Sequential model

    model = Sequential()

    keras.models.Sequential 类是神经网络模型的封装容器。它会提供常见的函数,例如 fit()、evaluate() 和 compile()。我们将介绍这些函数(在碰到这些函数的时候)。我们开始研究模型的层吧。

     

    层:

    Keras 层就像神经网络层。有全连接层、最大池化层和激活层。你可以使用模型的 add() 函数添加层。例如,简单的模型可以如下所示:

    from keras.models import Sequential

    from keras.layers.core import Dense, Activation, Flatten

    #创建序列模型

    model = Sequential()

     

    #第一层 - 添加有128个节点的全连接层以及32个节点的输入层。

    model.add(Dense(128, input_dim=32))

    第一层将维度设为 32(表示数据来自 32 维空间)。

     

    #第二层 - 添加 softmax 激活层。

    model.add(Activation('softmax'))

    第二层级获取第一层级的输出,并将输出维度设为 128 个节点。这种将输出传递给下一层级的链继续下去,直到最后一个层级(即模型的输出)。可以看出输出维度是 10。

     

    #第三层 - 添加全连接层。

    model.add(Dense(10))

     

    #第四层 - 添加 Sigmoid 激活层

    model.add(Activation('sigmoid'))

     

    Keras 将根据第一层自动推断后续所有层的形状。这意味着,你只需为第一层设置输入维度。

     

    构建好模型后,我们就可以用以下命令对其进行编译。我们将损失函数指定为我们一直处理的 categorical_crossentropy(交叉熵)。我们还可以指定优化程序,稍后我们将了解这一概念,暂时将使用 adam。最后,我们可以指定评估模型用到的指标。我们将使用准确率。

    model.compile(loss="categorical_crossentropy",optimizer="adam", metrics = ['accuracy'])

    我们可以使用以下命令来查看模型架构:

    model.summary()

    然后使用以下命令对其进行拟合,指定 epoch 次数和我们希望在屏幕上显示的信息详细程度。

    然后使用fit命令训练模型并通过 epoch 参数来指定训练轮数(周期),每 epoch 完成对整数据集的一次遍历。 verbose 参数可以指定显示训练过程信息类型,这里定义为 0 表示不显示信息。

    model.fit(X, y, nb_epoch=1000, verbose=0)

    注意:在 Keras 1 中,nb_epoch 会设置 epoch 次数,但是在 Keras 2 中,变成了 epochs。

    最后,我们可以使用以下命令来评估模型:

    model.evaluate()

     

     

    最新回复(0)