Keras-1 学习Keras,从Hello World开始

14 篇文章 2 订阅
12 篇文章 0 订阅

Keras Hello World

最近开始学习Keras,个人觉得最有效的学习方法就是写很多很多代码,熟能成巧。我们先从最简单的例子来学习Keras,Keras版的Hello World。
在这个例子中,我们的任务是进行花朵的分类。

Keras的安装

在Keras官网中已经给出了详细的安装指南

  • Linux 安装指南
  • Windows 安装指南
  • 但是个人还是推荐使用Anaconda进行安装,在Anaconda安装好的情况下使用以下命令进行安装Keras
    • 创建名为keras的环境

    conda create -n keras python=3

    • 进入环境

    activate keras

    • 安装keras

    conda update conda
    conda update --all
    conda install mingw libpython
    conda install keras

    • 安装TensorFlow

    pip install tensorflow

    • 安装一些必要的库(缺啥装啥)

    conda install jupyter notebook numpy matplotlib

  • Anaconda的下载速度可以通过设置国内镜像来提到,具体请看Windows下有什么办法提高conda install的速度?

让我们开始吧

首先,我们先导入模块,一些常见的模块如numpy, matplotlib就不解释了。

  • seaborn 一个matplotlib的高级封装,让画图更简单漂亮,但是在这个例子中,我们主要用它来导入数据
  • Sequential 叫做“序贯模型”,是Keras模型之一。详见关于Keras模型
  • keras.layers.core 常用层模块,包括全连接层(Dense),激活层等。详见常用层
  • keras.utils utils工具模块,提供了一系列有用的工具。详见utils工具
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

from sklearn.model_selection import train_test_split

import pandas as pd

from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.utils import np_utils

导入数据

  • sns.load_dataset('iris')导入iris数据库,iris包含了150条花的记录,前四个length和width是花的属性,species是花的种共有三种花,分别是setosa,versicolor和virginica。
  • iris.head()查看数据。
  • sns.pairplot(iris, hue='species')用于显示数据(这不是我们要关注的内容)
iris = sns.load_dataset('iris')
iris.head()
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
05.13.51.40.2setosa
14.93.01.40.2setosa
24.73.21.30.2setosa
34.63.11.50.2setosa
45.03.61.40.2setosa
sns.pairplot(iris, hue='species')
<seaborn.axisgrid.PairGrid at 0x1bdee328710>

这里写图片描述

训练集和测试集

  • train_test_split将数据集分割为训练集和测试集,train_size为训练集占整个数据集的大小,random_state为随机种子(详见这里
X = iris.values[:, :4]
y = iris.values[:, 4]
train_X, test_X, train_y, test_y = train_test_split(X, y, train_size=0.8, random_state=0)

One-Hot-Encoding

  • 深度网络只能接受数字作为输入,iris数据集中species是字符串类型的,因此我们需要将其数字化。
  • One-hot encoding 就是这样一种数字化的编码方法,相关概念详见数据处理——One-Hot Encoding
  • 下面给出两种不同的one-hot encoding的实现方式,它们并没有差别
def one_hot_encode_object_array(arr):
    uniques, ids = np.unique(arr, return_inverse=True)
    return np_utils.to_categorical(ids, len(uniques))
# if you are a pandas man ...
def one_hot_encode_object_array_pandas(arr):
    return pd.get_dummies(arr).values
train_y_ohe = one_hot_encode_object_array_pandas(train_y)
test_y_ohe = one_hot_encode_object_array_pandas(test_y)

搭起我们的网络结构

  • 我们要搭的网络很简单,只有两层,可以表示为 4-16-3,隐层激活函数是sigmoid,输出层时softmax
  • Sequential是多个网络层的线性堆叠,也就是“一条路走到黑”
  • Dense就是全连接层了,注意的是,第一层网络需要指明输入数据的大小,后面层就不需要了,keras会自动推导
  • Activation是激活层,常见的激活函数有sigmoid, softmax, ReLU等等
model = Sequential()
# hidden layer
model.add(Dense(16, input_shape=(4,)))
model.add(Activation('sigmoid'))
# output layer
model.add(Dense(3))
model.add(Activation('softmax'))

Compile 编译

  • 对学习过程进行配置。详见编译
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"])

Training 训练

  • verbose 是否打印训练log
  • validation_split 验证集的大小,关于验证集,简单的说就是用于调整模型参数(模型结构,学习速率,batch_size等等)。人们通过观察训练时的模型在验证集上的表现,来对自己模型作出调整
model.fit(train_X, train_y_ohe, epochs=100, batch_size=1, verbose=0, validation_split=0.2)
<keras.callbacks.History at 0x195e2abcf98>

Test 测试

loss, accuracy = model.evaluate(test_X, test_y_ohe, verbose=0)
print('Accuracy = {:.2f}'.format(accuracy))
Accuracy = 1.00

总结

对于一个深度学习的任务,大致可以分为以下三个部分

  1. 数据的准备。包括数据的获取,数据清洗,数据预处理等等
  2. 模型的构建。采用何种模型,网络结构是怎样的等都要考虑
  3. 参数的调整。通过反复训练来进行参数的调整,通常这也是最花时间的
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
每天前100人再送5门编程课! AI+5门300元课程+社群闭门分享会源码开源下载:https://github.com/DjangoPeng/keras-101/tree/master/code_samples 【为什么学AI】 归功于近年来大规模数据和硬件计算能力的大幅度提升,人工智能的概念近两年一直是市场追捧的对象。目前各大厂都争先恐后地布局AI,落地各类AI的的商业应用,也随之打响了一场激烈的人才争夺战。长远来看,越快将 AI 用于自己的工作中就能越早体会到AI带来的收益。 【讲师介绍】 彭靖田 Google Developer Experts。 曾为 TensorFlow Top级 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。 曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。 【课程设计】 课程内容基于最新的Keras版本(你也可以使用 TensorFlow 2 的 tf.keras 模块),其中有大量独家解读、案例,以及不少讲师一线实战多年的方法论和深度思考。同时,在层次划分上,难易兼顾,循序渐进。既有核心的基础知识,也有高级的进阶操作,尽量做到“老少皆宜”。 课程分为基础篇、入门篇和实战篇: 一、基础篇: 主要讲解人工智能发展史和深度学习脱颖而出的原由,以及神经网络的基础概念、理论实现、优化原理和计算方法。 二、入门篇: 主攻快速上手,通过7个小节让你从0到1实现环境搭建、模型优化,直接试水2个实战项目。同时,增强AI的理论学习,系统掌握机器学习3大分支、模型评估方法、数据预处理常用手段与过拟合问题的解决方案。 三、实战篇: 通过4个实战全面掌握深度学习理论与实现,涵盖目标检测、图像分类、可视化和可解释性学习、迁移学习、特征提取、数据增强等。带你综合运用前面所学的所有知识,逐渐熟练AI开发流程与技能。 课程包含思维导图上的所有内容(价值199元)前500名立减100元,仅99元买完就能学!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值