zoukankan      html  css  js  c++  java
  • Keras学习笔记1--基本入门

    """
    1、30s上手keras
    """
    #keras的核心数据结构是“模型”,模型是一种组织网络层的方式,keras 的主要模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈
    from keras.models import Sequential
    model=Sequential()
    ###将一些网络层通过.add()叠加起来,就构成了一个模型
    from keras.layers import Dense,Activation
    model.add(Dense(units=64,input_dim=100))
    model.add(Activation('relu'))
    model.add(Dense(units=10))
    model.add(Activation('softmax'))
    ###完成模型的搭建以后,我们需要使用.compile()方法编译
    model.compile(loss='categorical_crossentropy',optimizer=SGD(lr=0.01,momentum=0.9,nesterov=True))
    ## 完成编译以后,在训练数据上按照batch进行一定次数的迭代来训练网络
    model.fit(x_train,y_train,epochs=5,batch_size=32)
    ##  当然,我们也可以手动的把一个个batch送到网络中去训练
    model.train_on_batch(x_batch,y_batch)
    ####可以使用一行代码来对模型进行评估,看看模型的指标是否满足我们的要求
    loss_and_metrics=model.evaluate(x_test,y_test,batch_size=128)
    ###或者可以使用模型对新的数据进行预测
    classes=model.predict(x_test,batch_size=128)
    #搭建一个问答系统、图像分类模型,或神经图灵机、word2vec词嵌入器就是这么快。支撑深度学习的基本想法本就是简单的
    ####2、快速开始Sequential模型
    ###Sequential模型是多个网络层的线性堆叠,也就是“一条路走到黑”
    ###可以通过向Sequential模型传递一个layer的list来构建模型
    from keras.models import Sequential
    from keras.layers import Dense,Activation
    model=Sequential([Dense(32,units=784),Activation('relu'),Dense(10),Activation('softmax')])
    ###也可以通过add方式,
    
    ###指定输入数据的shape
    ###模型需要知道输入数据的shape,因此Sequential的第一层需要接受一个关于输入数据shape的参数,后面的每一层都可以自动的推导出中间的shape
    ###因此不需要为每层都指定这个参数
    ###(1)、传递一个 input_shape的关键字参数给第一层,input_shape是一个tuple类型的数据,其实也可以填入None,填入None表示此位置是任何正整数
    ###(2)、有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的输入数据shape,一些3D的时域层支持参数input_dim和input_length来指定shape
    ###(3)、如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),可以传递batch_size参数到一个层中,例如你想输入张量的batch
    ###大小是32,数据的shape是(6,8),那么你需要传递batch_size=32和input_dim=(6,8)
    #编译  在训练模型之前,需要通过compile来对学习过程进行配置,接受三个参数
    ##(1)、优化器optimizier:该参数可以指定为预定义的优化器,如rmsprop、adagrad
    ##(2)、损失函数loss:该参数为模型是他最小化目标函数,可以为预定义的损失函数名,如categorical——crossentropy、mse
    ###(3)、指标列表 对于分类问题,我们一般将该列表设置为metrics=[‘accuracy’]。
    model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
    
    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])
    ##训练   keras以Numpy数组作为输入数据和标签的数据类型,训练模型一般使用fit函数。
    ###example1-基于多层感知器的softmax分类器
    from keras.models import Sequential
    from keras.layers import Dense,Dropout,Activation
    from keras.optimizers import SGD
    import numpy as np
    import keras
    ##generate dummy data
    x_train=np.random.random((1000,20))
    y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10)
    x_test=np.random.random((100,20))
    y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10)
    
    ##build model
    model=Sequential()
    # Dense(64) is a fully-connected layer with 64 hidden units.
    # in the first layer, you must specify the expected input data shape:
    # here, 20-dimensional vectors.
    model.add(Dense(64,activation='relu',input_dim=20))
    model.add(Dropout(0.5))
    model.add(Dense(64,activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(10,activation='softmax'))
    
    sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
    model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])
    model.fit(x_train,y_train,epochs=20,batch_size=128)
    score=model.evaluate(x_test,y_test,batch_size=128)
    print(score)
    ###例子2  MLP的二分类
    import numpy as np
    from keras.models import Sequential
    from keras.layers import Dense,Dropout
    x_train=np.random.random((1000,20))
    y_train=np.random.randint(2,size=(1000,1))
    x_test=np.random.random((100,20))
    y_test=np.random.randint(2,size=(100,1))
    
    model=Sequential()
    model.add(Dense(64,input_dim=20,activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(64,activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1,activation='sigmoid'))
    
    model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
    model.fit(x_train,y_train,epochs=20,batch_size=128)
    model.evaluate(x_test,y_test,batch_size=128)
  • 相关阅读:
    Linux主要shell命令详解(下)
    mget命令, ftp命令详解
    VI 基本可视模式
    vim使用技巧
    cd及目录快速切换
    du命令解决linux磁盘空间满的问题(很不错的哦)
    Mysql删除数据后磁盘空间未释放的解决办法【转】
    MYSQL-innodb性能优化几个点
    Apache服务器出现Forbidden 403错误提示的解决方法总结
    MySQL 分区表原理及数据备份转移实战
  • 原文地址:https://www.cnblogs.com/itdyb/p/7865918.html
Copyright © 2011-2022 走看看