Keras 基础(1)

作者: zidea | 来源:发表于2019-07-31 07:12 被阅读41次
MachineLearninginMarketing

如果 用 tensorflow 来搭建神经网络,我们还需要下一些功夫,而使用keras 我们就省心了,提供高级的 API 供我们使用来搭建神经网络。
keras 在不就之前也走进了谷歌的大门,keras 也被整合到 tensorflow 方便我们使用。

定义模型样子

import tensorflow as tf
mnist = tf.keras.datasets.mnist # 28 x 28 images of hand-written digits 0-9
#### 可视化数据

通过 keras.datasets 导入手写数字集,用于我们学习如何搭建神经网络来识别图中数字

import matplotlib.pyplot as plt
plt.imshow(x_train[0])
print(x_train[0])

使用 matplotlib 库可以将数据可视化,让我们更加直观地了解图片数据到底是什么。


图片就这样显示出来,识别图片中的数字颜色的(也就是带有 RGB 通道)的图片并没有什么帮助,可以根据需要去色后进行分析。

去色处理

plt.imshow(x_train[0],cmap=plt.cm.binary)

对数据进行缩放

x_train = tf.keras.utils.normalize(x_train,axis = 1)
x_test = tf.keras.utils.normalize(x_test, axis = 1)

我们可以对数据通过处理将数据映射到 1 - 0 区间,这样更便于处理。

 0.         0.         0.         0.         0.         0.
  0.         0.         0.         0.        ]
 [0.         0.         0.         0.         0.37491383 0.56222061
  0.66525569 0.63253163 0.48748768 0.45852825 0.43408872 0.359873
  0.17428513 0.01425695 0.    

开始搭建我们神经网络,

model = tf.keras.models.Sequential()

这里我们使用 Sequential 创建顺序执行执行神经网络。

# add layer first layer is input layer
model.add(tf.keras.layers.Flatten())

首先将多维数据压缩为一维数据,作为输入数据。Dense 表示一个全连接的层,这也就是我们要添加一个输出 128 的全连接层。然后activation 可以指定激活函数。

model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))

添加两个神经层,因为每一层输入都是 128 而且激活函数使用简单的 relu,relu 相比其他激活函数计算简单。

model.add(tf.keras.layers.Dense(10,activation=tf.nn.softmax))

接下来评价我们模型,可以指定 loss 函数类型,训练模型就是找到最合适方程,可以在 optimizer 指定找到最合适函数的方式。

model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

model.fit(x_train,y_train,epochs=3)

开始训练,第一个参数为训练集,y_train 为期望值,x_train 是二维数组,一维是训练集样本数量,第二个维度是图片大小,28 * 28 = 784。对于 y_train 的第一个维度就是样本的数量,第二个就是 10 维,因为我们图片是分为 10 类。

其实这里还有参数batch_size 指定数量,这样 keras 是根据 batch_size 将数据进行划分,然后在 batch_size 计算出 loss 函数得到然后根据 loss 函数结构调整一次参数依次类推,每一个 batch 都会根据loss 函数来更新参数



然后每完成一次所有 batch 运算就算为 epoch

Epoch 1/3
60000/60000 [==============================] - 4s 64us/sample - loss: 0.2680 - acc: 0.9214
Epoch 2/3
60000/60000 [==============================] - 4s 62us/sample - loss: 0.1091 - acc: 0.9660
Epoch 3/3
60000/60000 [==============================] - 4s 62us/sample - loss: 0.0736 - acc: 0.9768
val_loss, val_acc = model.evaluate(x_test,y_test)
print(val_loss,val_acc)

输出一个 loss

(0.11153460214892402, 0.9629)

然后就可以检查一下我们训练成果了,我们可以将训练好模型保存起来,以便以后可以无需重复训练通过加载训练好的模型,来进行图形识别。

model.save('epic_num_reader.model')
new_model = tf.keras.models.load_model('epic_num_reader.model')
predictions = new_model.predict([x_test])
print(predictions)

从结果来看我们训练出的模型可以满足我们需要,模型已经成功根据图片

7

通过我们测试模型现在已经可以识别出数字 7

相关文章

  • Keras 基础(1)

    如果 用 tensorflow 来搭建神经网络,我们还需要下一些功夫,而使用keras 我们就省心了,提供高级的 ...

  • keras基础

    [TOC] 安装,配置和测试 安装 keras需要依赖多个python库,包括numpy,scipy,pyyaml...

  • keras基础

    本文是DataCamp《Deep Learning in Python》课程的学习笔记,代码部分包含regress...

  • Keras踩坑笔记

    昨天下午想学一下keras,就想用keras搭一个简单的分类模型,基础模型keras都可以直接调用,本来以为很简单...

  • cv内容整理

    基础 cnnConv2D, Conv1D tf.keras.layers.Conv2D[https://www.t...

  • TensorFlow2.0 - C2 Guide - 2 Ker

    1 Keras overview https://www.tensorflow.org/guide/keras建立...

  • 深度学习框架keras模块安装

    安装环境: 1. Keras 介绍 Keras(http://keras.io/)是一个基于Theano或Tens...

  • 深度学习开发框架Keras

    一、Keras安装及配置 1、安装Keras 由于Keras是tensorflow的封装,必须先安装tensorf...

  • keras基础学习

    现在开始学习keras,作为一个小白,先写一个一个简单的序贯模型和函数式模型 import numpyas np ...

  • Keras #1

    1、backend keras 有三大后端:Tensorflow、Theano、CNTK TensorFlow是由...

网友评论

    本文标题:Keras 基础(1)

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