美文网首页Tensorflow实践
Keras学习指北-逻辑回归(tensorflow后端)

Keras学习指北-逻辑回归(tensorflow后端)

作者: 一块自由的砖 | 来源:发表于2019-12-31 20:50 被阅读0次

    Sequential模型

    Sequential模型字面上的翻译是顺序模型,给人的感觉是线性模型,但实际上Sequential模型可以构建非常复杂的神经网络,包括全连接神经网络、卷积神经网络(CNN)、循环神经网络(RNN)等等。Sequential更准确的理解应该是堆叠,通过堆叠许多层,构建出深度神经网络。
    以前整理的Sequential模型
    Sequential模型

    对比tensorflow和keras

    以前的非线性多项式回归模型(tensorflow实现)
    每次一篇10分钟,小步快跑攻陷Tensorflow(逻辑回归)

    四大步骤

    1 数据集整理
    2 定义模型
    3 训练/学习
    4 预测/评估

    实战

    用keras组建神经网络,对minist数据集进行处理。

    #配置环境
    import os
    import sys
    import time
    import numpy as np
    from keras import models
    from keras import layers
    from keras.datasets import mnist
    from keras.utils import to_categorical
    from tensorflow.keras.callbacks import TensorBoard
    #解决reuse问题,可以反复的执行
    (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
    #查看训练集数据维度
    print(train_images.shape)
    #查看训练集目标维度
    print(len(train_labels))
    #查看测试集数据维度
    print(test_images.shape)
    #查看测试机目标维度
    print(len(test_labels))
    #预处理数据
    """
    数据进行预处理,将其变换为网络要求的形状,并缩放到所有值都在 [0, 1] 区间。训练图像保
    存在一个 uint8 类型的数组中,其形状为 (60000, 28, 28),取值区间为 [0, 255]。需要将其
    变换为一个 float32 数组,其形状为 (60000, 28 * 28),取值范围为 0~1。
    """
    train_images=train_images.reshape(60000, 28 * 28)
    train_images=train_images.astype('float32')/255
    test_images=test_images.reshape(10000, 28 * 28)
    test_images=test_images.astype('float32')/255
    #标签进行分类编码。将类别向量转换为二进制(只有0和1)
    train_labels = to_categorical(train_labels)
    test_labels = to_categorical(test_labels)
    print(train_labels)
    print(test_labels)
    
    ###################################建模##################################
    #设置全局参数
    ##
    n_batch_size = 128
    ##训练代数,
    n_epochs = 10
    
    #构建网络
    """
     2 个 Dense 层,密集连接(也叫全连接)的神经层。
     第二层(也是最后一层)是一个 10 路 softmax 层,它将返回一个由 10 个概率值(总和为 1)组成的数组
    """ 
    network = models.Sequential()
    network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
    network.add(layers.Dense(10, activation='softmax'))
    
    
    """
    优化器(optimizer):基于训练数据和损失函数来更新网络的机制。
    损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。
    在训练和测试过程中需要监控的指标(metric):本例只关心精度,即正确分类的图像所占的比例。
    """
    network.compile(optimizer='rmsprop',
                    loss='categorical_crossentropy',
                    metrics=['accuracy'])
    
    #训练网络,这里要使用tensorboard
    network.fit(train_images, train_labels, 
                epochs=n_epochs, batch_size=n_batch_size,
                callbacks=[TensorBoard(log_dir='./graphs')])
    
    #测试数据(精度)
    test_loss, test_acc = network.evaluate(test_images, test_labels)
    print('test_acc:', test_acc)
    

    看看效果


    image.png

    tensorboard

    image.png image.png

    全部代码

    到github查看https://github.com/horacepei/tensorflow_study

    相关文章

      网友评论

        本文标题:Keras学习指北-逻辑回归(tensorflow后端)

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