美文网首页
Keras笔记(1)  入门

Keras笔记(1)  入门

作者: 无事扯淡 | 来源:发表于2017-04-02 09:42 被阅读0次

    使用TensorFlow构建神经网络确实有些麻烦,中间层需要自己核算矩阵,这导致建模略微负责。这里使用Keras构建网络,它可以用TensorFlow作为后端。

    1.安装

    pip3 install keras
    

    2.小试牛刀

    playground例子
    • 数据
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    x1 = np.random.rand(100,2)*6
    x2 = np.random.rand(100,2)*-6
    x_ = np.vstack((x1,x2))
    y1 = np.ones((100,1))
    y2 = np.zeros((100,1))
    y_ = np.vstack((np.hstack((y1,y2)),np.hstack((y2,y1))))
    
    • 模型
    from keras.models import Sequential
    from keras.layers import Dense, Activation
    model = Sequential()
    model.add(Dense(1, input_dim=2))
    model.add(Activation('relu'))
    model.add(Dense(2))
    model.add(Activation('softmax'))
    model.compile(optimizer='rmsprop',
    loss='categorical_crossentropy',
    metrics=['accuracy'])
    model.fit(x_, y_, nb_epoch=100, batch_size=20)
    

    keras在构建每层网络的时候非常简单,这里的Dense相当于一层网络,这里把Activation(激活函数)分开写了,实际上可以写在一起。对于第一层网络必须要指定输入维度,中间层的维度不需要管就可以自动设置。模型建立之后要编译,编译过程需要指定损失函数和优化方法。训练使用的方法是fit。

    • 模型可视化
    from keras.utils import plot_model
    plot_model(model, to_file='model.png')
    

    这里的模型可视化需要pyplot,安装方法如下:

    pip3 install pydot-ng
    sudo apt-get install graphviz
    
    • 训练可视化
      fit会返回一个history对象,从中可以获取一些数据包括批次以及损失数据。
    h = model.fit(x_, y_, nb_epoch=100, batch_size=10)
    plt.plot(h.epoch,h.history['loss'])
    
    Paste_Image.png
    • 预测结果
    bg = []
    values = np.linspace(-6,6,num=50)
    for i in range(50):
        bg.append([[values[i], v] for v in values])
    xx = np.array(bg).reshape(2500,2).astype(np.float32)
    out = model.predict(xx)
    #out.shape = (2500,2)
    out_classes = model.predict_classes(xx)
    #out.shape = (2500,)
    

    这里使用predict会给出概率参数,使用predict_classes则会计算出是哪个类别,可以通过查看shape参数看出这个区别。

    相关文章

      网友评论

          本文标题:Keras笔记(1)  入门

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