• Keras学习


    Keras学习

     

    一、Keras Sequential顺序模型

    1.模型构建

    用keras定义的网络模型有两种方式:

    • sequential 顺序模型

    • keras 函数式 API模型

    1)顺序模型

    from keras.models import Sequential
    import keras
    import os
    os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"

    model = Sequential([keras.layers.Dense(32, input_shape=(784, )),
                       keras.layers.Activation('relu'),
                       keras.layers.Dense(10),
                       keras.layers.Activation('softmax')])
    # 等价于以下方法构建的顺序模型
    model = Sequential()
    model.add(keras.layers.Dense(32, input_shape=(784, ), activation='relu'))
    # 或者为model.add(keras.layers.Dense(32, input_dim=784, activation='relu'))
    model.add(keras.layers.Dense(10, activation='softmax'))

    其中Dense的几个参数:

    • activation: 激活函数

    • kernel_initializer和bias_initializer: 权重和偏置项的初始化方案

    • kernel_regularizer.l1/l2和bias_regularizer.l1/l2: 权重和偏置项的正则方案,L1或L2

    2)函数式模型

    # 函数式模型
    a = keras.layers.Input(shape=(32, ))
    b = keras.layers.Dense(32)(a)
    c = keras.layers.Dense(10)(b)
    model = keras.models.Model(inputs=[a, b], outputs=c)

    2.模型编译

    无论是对怎样的问题,我们都通过compile()的方法

    其中的一些参数:

    • optimizer #优化器,利用其性质,找到使损失函数值最小的最优值

    • loss #损失函数,模型视图最小化的目标函数

    • metric #评判标准,对于分类问题,一般我们定义为accuracy,当然,也可以变为其他的

    # 模型编译
    # 多分类问题
    model.compile(optimizer='adam',
                 loss='categorical_crossentropy',
                 metrics=['accuracy'])

    # 二分类问题
    model.compile(optimizer='rmsprop',
                 loss='binary_crossentropy',
                 metrics=['accuracy'])

    # 均方误差回归问题
    model.compile(optimizer='rmsprop',
                 loss='mse')

    # 自定义评估标准函数
    import keras.backend as K

    def mean_pred(y_true, y_pred):
       return K.mean(y_pred)

    model.compile(optimizer='rmsprop',
                 loss='binary_crossentropy',
                 metrics=['accuracy', mean_pred])

    可用的优化器:

    在模型训练后,如果想观察其网络结构,我们可以用model.summary(),并用print(model.output_shape)打印模型的输出。

    3.模型训练

    上面介绍的两种模型,无论是何种模型,我们在训练其模型时都是使用fit()函数进行训练

    # 模型训练
    model.fit(data, labels, epochs=5, batch_size=32)

    4.模型评估

    1)evaluate #评估模型,返回数据的相关误差

    # 模型评估
    loss_and_metrics = model.evaluate(x_test, y_test, batch_size=100, verbose=1, sample_weight=None, steps=None)

    其中参数介绍:

    • x_train #测试数据的numpy数组

    • y_train #测试数据的标签的numpy数组或列表

    • batch_size #表示每次评估的样本数,数据类型必须是整形或者为空,空则默认32

    • verbose #0或1,0就是安静模式,1就是进度条模式

    • steps #声明评估结束之前的总步数,默认为空

    2)predict #为输入的样本生成输出预测

    classes = model.predict(x_test, batch_size=100, verbose=0, steps=None)

    其参数与上述参数差不多,这里不细讲。

  • 相关阅读:
    django-高级
    django-模板
    django-视图
    django笔记一
    redis、mysql、mongodb数据库
    Scrapy-redis分布式+Scrapy-redis实战
    python2 'ascii'编码问题
    【java8新特性】方法引用
    java浮点数运算无法精确的问题
    java中Array和ArrayList区别
  • 原文地址:https://www.cnblogs.com/minyuan/p/13039784.html
Copyright © 2020-2023  润新知