TensorFlow2.0 Keras 接口

一、简介

Keras 是一个主要由Python 语言开发的开源神经网络计算库,最初由François Chollet编写,它被设计为高度模块化和易扩展的高层神经网络接口,使得用户可以不需要过多的专业知识就可以简洁、快速地完成模型的搭建与训练。Keras 库分为前端和后端,其中后端可以基于现有的深度学习框架实现,如Theano,CNTK,TensorFlow,前端接口即Keras抽象过的统一接口API。用户通过Keras 编写的代码可以轻松的切换不同的后端运行,灵活性较大。正是由于Keras 的高度抽象和易用特性,截止到2019 年,Keras 市场份额达到了26.6%,增长19.7%,同类深度学习框架中仅次于TensorFlow(数据来自KDnuggets)。TensorFlow 与Keras 存在既竞争,又合作的关系,甚至连Keras 创始人都在Google 工作。早在2015 年11 月,TensorFlow 被加入Keras 后端支持。从2017 年开始,Keras 的大部分组件被整合到TensorFlow 框架中。

在TensorFlow 2 版本中,Keras 被正式确定为TensorFlow 的高层API 唯一接口,取代了TensorFlow 1 版本中自带的tf.layers 等高层接口。也就是说,现在只能使用Keras 的接口来完成TensorFlow 层方式的模型搭建与训练。在TensorFlow 中,Keras 被实现在tf.keras 子模块中。那么 Keras 与tf.keras 有什么区别与联系呢?其实Keras 可以理解为一套搭建与训练神经网络的高层API 协议,Keras 本身已经实现了此协议,可以方便的调用TensorFlow,CNTK 等后端完成加速计算;在TensorFlow 中,也实现了一套Keras 协议,即tf.keras,但只能基于TensorFlow 后端计算,并对TensorFlow 的支持更好。对于使用TensorFlow 的开发者来说,tf.keras 可以理解为一个普通的子模块,与其他子模块,如tf.math,tf.data 等并没有什么差别。

二、常用功能模块

1、 tf.keras.layers 命名空间(下文使用layers 指代tf.keras.layers)中提供了大量常见网络层的类接口,如全连接层,激活含水层,池化层,卷积层,循环神经网络层等等。对于这些网络层类,只需要在创建时指定网络层的相关参数,并调用__call__方法即可完成前向计算。在调用__call__方法时,Keras 会自动调用每个层的前向传播逻辑,这些逻辑一般实现在类的call 函数中。

例1、实现softmax层

import tensorflow as tf
# 导入keras 模型,不能使用import keras,它导入的是标准的Keras 库
from tensorflow import keras
from tensorflow.keras import layers # 导入常见网络层类
x = tf.constant([2.,1.,0.1])
#然后创建Softmax 层,并自动调用__call__方法完成前向计算:
layer = layers.Softmax(axis=-1) # 创建Softmax 层
layer(x) # 调用sof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值