美文网首页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