美文网首页机器学习
Keras Sequential 顺序模型

Keras Sequential 顺序模型

作者: 墨马 | 来源:发表于2019-10-02 12:58 被阅读0次

    创建Sequential模型

    通过网络层实例的列表传递给Sequential的构造器

    from keras.models import Sequential
    from keras.layers import Dense, Activation
    
    model = Sequential([
        Dense(32, input_shape=(784,)),
        Activation('relu'),
        Dense(10),
        Activation('softmax'),
    ])
    

    简单使用.add()方法将各层添加到模型中

    model = Sequential()
    model.add(Dense(32, input_dim=784))
    model.add(Activation('relu'))
    

    指定输入数据的尺寸

    模型需要知道它所期望的输入的尺寸,顺序模型的第一层需要接受关于尺寸的信息(其他层可以推断)

    • input_shap 表示尺寸的元组(整数或None,None表示任何整数) ,不包含batch大小。
    • 某些2D层(Dense)支持通过input_dim指定尺寸,某些3D支持input_dim和input_length参数。
    • batch_size固定batch大小。

    batsize = 32
    input_shap=(6,8)
    每一批输入的尺寸是(32,6,8)

    model = Sequential()
    model.add(Dense(32, input_shape=(784,)))
    # 等价于
    model = Sequential()
    model.add(Dense(32, input_dim=784))
    

    模型编译

    通过compile配置学习过程

    • 优化器optimizer
      • 现有优化器的字符串标识:rmsprop或adagrad
      • Optimizer类的实例
    • 损失函数loss,模型试图最小化的目标函数
      • 现有损失函数的字符串标识符:categorical_crossentropy 或 mse
      • 目标函数
    • 评估标准metrics(metrics = ['accuracy'])
      • 现有的标准的字符串标识符
      • 自定义的评估标准函数
    # 多分类问题
    model.compile(optimizer='rmsprop',
                  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])
    

    模型训练

    对输入数据和标签的Numpy矩阵上进行训练。
    通常使用fit函数

    # 对于具有 2 个类的单输入模型(二进制分类):
    
    model = Sequential()
    model.add(Dense(32, activation='relu', input_dim=100))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer='rmsprop',
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    
    # 生成虚拟数据
    import numpy as np
    data = np.random.random((1000, 100))
    labels = np.random.randint(2, size=(1000, 1))
    
    # 训练模型,以 32 个样本为一个 batch 进行迭代
    model.fit(data, labels, epochs=10, batch_size=32)
    
    # 对于具有 10 个类的单输入模型(多分类分类):
    
    model = Sequential()
    model.add(Dense(32, activation='relu', input_dim=100))
    model.add(Dense(10, activation='softmax'))
    model.compile(optimizer='rmsprop',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    
    # 生成虚拟数据
    import numpy as np
    data = np.random.random((1000, 100))
    labels = np.random.randint(10, size=(1000, 1))
    
    # 将标签转换为分类的 one-hot 编码
    one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)
    
    # 训练模型,以 32 个样本为一个 batch 进行迭代
    model.fit(data, one_hot_labels, epochs=10, batch_size=32)
    
    

    相关文章

      网友评论

        本文标题:Keras Sequential 顺序模型

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