keras简单的实际入门教程
keras搭建模型
方法一
Sequential()搭建模型
- Sequential 是多个网络层的线性堆栈,可以从keras的线性模型库导入Sequential模型:
from keras.models import Sequential
import tensorflow as tf#创建一个网络模型
model = Sequential()Using Tensorflow backend.
- 将一些网络层的layers通过add()添加到Sequential中
from keras.layers import Dense,Activationmodel.add(Dense(units=64,input_dim=100))
model.add(Activation(('relu'))
model.add(Dense(units=10))
model.add(Activation('softmax'))
- 也可以自己直接输入一个list完成Sequential模型的搭建:
model = Sequential([(Dense(units=64,input_dim=100)),(Activate('relu')),(Dense(units=10)),model.add(Activation('softmax'))])
除了第一个输入的变量需要指定数据的shape以外,其他层的数据框架会自动推到。
- 可以使用 input_shape 这个关键字来指定第一层输入的 shape,input_shape 是一个 tuple 类型的数据(可以是整数也可以填入 None,如果填入 None 则表示此位置可能是任何正整数)但需要注意的是,数据的 batch大小不应包含在其中
- 有些 2D 层,可以使用 Dense,指定第一层输入维度 input_dim 来隐含的指定输入数据的 shape,它是一个 Int 类型的数据。还有一些 3D 的时域层支持通过参数 input_dim 和 input_length 来指定输入 shape。
model = Sequential()
model.add(Dense(32,input_shape=(784,)))model= Sequential()
model.add(Dense(32,input_dim=784))
创建好模型后可以使用
model.summary()
来查看最终的模型的结构
方法二-使用Model()模型来创建
方法一是使用Sequential()(中文名是序贯模型)此处使用Model()(函数式模型)来搭建模型。
中文文档中的说明:Keras 函数式模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。一句话,只要你的模型不是类似 VGG 一条路走到黑的模型,或者你的模型需要多于一个的输出,那么你总应该选择函数式模型。函数式模型是最广泛的一类模型,序贯模型(Sequential)只是它的一种特殊情况。
- 简单的demo
from keras.layers import Input,Dense
from keras.models import Modelinputs = Input(shape=(784,))# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)model = Model(inputs=inputs,outputs=predictions)
model.compile(optimizer='rmaprop',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(data,labels)#start training
- 编译创建好的环境
网络模型创建好之后,需要对网络的歇息过程进行配置,否则在调用fit或者evaluate是会抛出异常。使用
compile(self, optimizer, loss, metrics=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
compile()
主要接受前三个参数:
loss
:字符串类型,用来指定损失函数,如:categorical_crossentropy,binary_crossentropy
optimizer
:字符串类型,用来指定优化方式,如:rmsprop,adam,sgd
metrics
:列表类型,用来指定衡量模型的指标,如:accuracy
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
- 训练模型
训练模型一般使用fit()
函数:
fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None, validation_split=0.0,validation_data=None,shuffle=True,class_weight=None, sample_weight=None, initial_epoch=0)
- x: 训练数据数组。如果输入的是框架本地的张量(如 Tensorflow 的数据 tensors ), x 可以是 None (默认) 。
- y: 目标(标签)数据数组。如果输入的是框架本地的张量(如 Tensorflow 的数据 tensors ), y 可以是 None (默认) 。
- batch_size: 指定 batch 的大小,为整数或者为 None。如果没有指定,默认为 32。
- epochs: 指定训练时全部样本的迭代次数,为整数。
官方教程的例子
# For a single-input model with 2 classes (binary classification):model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])# Generate dummy data
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))# Train the model, iterating on the data in batches of 32 samples
model.fit(data, labels, epochs=10, batch_size=32)
# For a single-input model with 10 classes (categorical classification):model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])# Generate dummy data
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(10, size=(1000, 1))# Convert labels to categorical one-hot encoding
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)# Train the model, iterating on the data in batches of 32 samples
model.fit(data, one_hot_labels, epochs=10, batch_size=32)
keras简单的实际入门教程相关推荐
- CAD简单圣诞树新手入门教程:
合适CAD简单圣诞树新手入门教程: 花:1.先画花瓣 2.画两个相交的圆 3.修剪掉不用的边 4.变成花瓣 5.然后选择花瓣应用阵型工具 6.阵型数量为6个 7.这样花就画好了. 树:1.首先用圆弧命 ...
- 掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程
作者 | Himanshu Rawlani 译者 | Monanfei,责编 | 琥珀 出品 | AI科技大本营(id:rgznai100) 2019 年 3 月 6 日,谷歌在 TensorFlow ...
- 写一篇简单的TileMap入门教程
是好久好久都没有更新了 最近上课讲到了unity的TileMap,那么就给大家献上我自己对TileMap的理解以及一些入门操作,便于给刚接触TileMap的你一些参考. TileMap总所周知是一个十 ...
- 史上最简单的Git入门教程
1. 版本控制系统简介 1.1 何为版本控制 版本控制最主要的功能就是追踪文件的变更.它将什么时候.什么人更改了文件的什么内容等信息忠实地了已录下来.每一次文件的改变,文件的版本号都将增加.除了记录版 ...
- 最简单的 Git 入门教程
机缘巧合之下,我开始使用 GitHub ,但事实上,刚刚入门的我不知道如何才能使 GitHub 发挥他的全部功能.不久之前,我偶然听了李福斯先生对 GitHub 的介绍,受益匪浅. 简单的来说, Gi ...
- 零基础超简单的Docker入门教程 So Easy
前提 本文是基于windows环境下使用docker的学习文章 其实我也有很长的一段时期在ubuntu系统下开发,很喜欢linux系统的纯净方便,但是当你身边同事都是使用windows与你交流沟通传输 ...
- 魔方教程一步一步图解(史上最简单的魔方入门教程)新手一看就会
IT数学系列最常见的魔方是三阶魔方,是匈牙利布达佩斯建筑学院厄尔诺·鲁比克教授在1974年发明的.魔方教程一步一步图解新手一看就会. 魔方教程一步一步图解 魔方共6色6面,每面又分为中央块(最中间的块 ...
- 最简单的Lambda入门教程
Lambda简介 Lambda作为函数式编程中的基础部分,在其他编程语言(例如:Scala)中早就广为使用,但在JAVA领域中发展较慢,直到java8,才开始支持Lambda. 抛开数学定义不看,直接 ...
- Python入门教程详解
Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...
最新文章
- 关于学习Python的一点学习总结(58->匹配对象和编组)
- 【C++多线程系列】【七】实现经典的C/S架构
- reservation for talk at Stanford
- 用图表说话 麦肯锡 pdf下载_揭秘麦肯锡顾问百万年薪背后的逻辑,麦肯锡「方法论」系列大合集...
- 汇编学习笔记(二)--数据处理的两个基本问题
- 猎鹰与龙飞船基于Linux,采用C++、Chromium与JS开发
- 枚举对象注释_如何以及何时使用枚举和注释
- Mac下配置sublime实现LaTeX
- CornerNet: 将目标检测问题视作关键点检测与配对
- Windows2008 Server r2 64位显示桌面图标的方法
- 译注(1): 为什么大多数编程语言里,= 号被用来做赋值操作符?
- ANDROID定义自己的看法——onMeasure,MeasureSpec源代码 过程 思考具体解释
- oracle merge into where,Oracle merge into语法简介
- 容器技术Docker K8s 10 入门实践集群创建
- php 跨域 session,php session 跨域的解决办法
- 把整个网页下载下来的方法
- vtkPolyData获取bounds点坐标
- Linux内核常见分配函数
- 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
- 李宏毅机器学习之Deep Learning简介