目录

tf.keras

TensorFlow 1的时代

TensorFlow 2(2.6之前)的时代

TensorFlow 2(2.6之后,含2.6)的时代

表面统一,背后杂乱

举几个例子

tf.keras.datasets.mnist

tf.keras.models.Sequential()

tf.keras.layers


TensorFlow和Keras就不过多介绍了。

反正记得对于很多人来说,TensorFlow+Keras的组合就够用了,并且也很好用。

tf.keras

深度学习系统里有一个很严重的问题,就是兼容性。这是因为深度学习系统里有很多的模块(构件、组件),并且很可能是不同的团队开发,比如TensorFlow和Keras。

TensorFlow 1的时代

TensorFlow 1和Keras互相独立,虽然在TensorFlow 1.1x的时候就整合了Keras,但整合进去的还不完善,所以当时得分别安装

pip install tensorflow
pip install keras

也要分别引用

import tensorflow
import keras

TensorFlow 2(2.6之前)的时代

TensorFlow 2(2.6之前)完成了对Keras 的整合,Keras变成了TensorFlow代码库的一部分。

安装变成了只安装TensorFlow即可,Keras不再作为独立的模块出现,而是TensorFlow的一部分。

pip install tensorflow

这个时候感觉代码的结构就已经比较混乱了。因为想使用Keras,有好多入口(调用方法)

比如

import tensorflow.keras.xxxx
import tensorflow.python.keras.xxx

TensorFlow 2(2.6之后,含2.6)的时代

种种原因,TensorFlow 2(2.6之后,含2.6),Keras的代码又独立出来了。

Tensorflow 2.6 的发行说明中指出,Keras 被拆分为单独的 PIP 包(keras),Keras代码已移至 GitHub 存储库 keras-team/keras,tf.keras 的 API 端点保持不变,但现在由 keras PIP 包支持。

对于用户来说,安装命令还是一样。

虽然命令一样,但实际的动作和TensorFlow 2(2.6之前)不一样了,执行这条命令除了安装Tensorflow模块之外,还会自动安装Keras模块(Keras模块从TensorFlow模块中拆分出来了)

pip install tensorflow

Tensorflow 2.6 的发行说明中还说明了tensorflow/python/keras 中的现有代码是一个陈旧的副本,将在未来版本 (2.7) 中删除。

应删除对 tensorflow.python.keras 的任何导入,并将它们替换为公共 tf.keras API。

所以应统一使用

import tensorflow.keras.xxxx

表面统一,背后杂乱

当然了,tensorflow和keras发展的过程中,分分合合,造成了很多历史遗留问题。虽然现在统一使用tensorflow.keras这个入口,但这个入口背后的代码却是层层跳转,显得非常复杂。

tensorflow.keras里定义了很多模块,比如layers、models

假设有一个模块叫tf.keras.xxx

CTRL+鼠标左键点击xxx无法跳转到定义

断点调试可以发现,tf.keras模块实际调用的是keras.api._v2.keras模块,

查看tf.keras的源码也佐证了这一点

_keras_module = "keras.api._v2.keras"
keras = _LazyLoader("keras", globals(), _keras_module)
_module_dir = _module_util.get_parent_dir_for_name(_keras_module)
if _module_dir:_current_module.__path__ = [_module_dir] + _current_module.__path__
setattr(_current_module, "keras", keras)

举几个例子

tf.keras.datasets.mnist

keras.api._v2.keras.datasets.mnist模块其实还不是最终节点,在其__init__.py中有定义

from keras.datasets.mnist import load_data

keras.datasets.mnist才是实现了mnist数据集操作的模块

我们主要用到的是读取数据集,即loda_data函数

tf.keras.models.Sequential()

来源于from keras.api._v2.keras import models

在keras.api._v2.keras.models的__init__.py中有定义

from keras.engine.sequential import Sequential

可以看出,Sequential其实是在keras.engine.sequential中实现的

tf.keras.layers

和tf.keras.models类似,都是定义在keras.api._v2.keras下,最终在keras.engine.xx或者keras.layers.xx中实现

例如ReLU,实际是在from keras.layers.activation.relu import ReLU中实现

TensorFlow 2.9的零零碎碎(一)-tf.keras里的兜兜转转相关推荐

  1. 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...

  2. 图片基础与tf.keras介绍

    图片基础与tf.keras介绍 1.1 图像基本知识 回忆:之前在特征抽取中如何将文本处理成数值. 思考:如何将图片文件转换成机器学习算法能够处理的数据? 我们经常接触到的图片有两种,一种是黑白图片( ...

  3. tf.keras softmax多分类

    学习目标: tf.keras softmax 多分类 对数几率回归解决的是二分类的问题,对于多个选项的问题,我们可以使用softmax函数.它是对数几率回归在 N 个可能不同的值上的推广. 学习过程: ...

  4. tensorflow tf.keras.losses.MeanSquaredError 均方差损失函数 示例

    import tensorflow as tf import numpy as np 公式 error=1m∑i=1m(xi−yi)2error = \frac{1}{m}\sum_{i=1}^{m} ...

  5. tensorflow tf.keras.layers tf.image 图像增强

    import matplotlib.pyplot as plt import numpy as np import tensorflow as tf import tensorflow_dataset ...

  6. tensorflow tf.keras.utils.plot_model 画深度学习神经网络拓扑图

    tensorflow tf.keras.utils.plot_model 画网络拓扑图 # pip install graphviz # pip install pydot # 下载 graphviz ...

  7. 【tf.keras】TensorFlow 1.x 到 2.0 的 API 变化

    3. model.compile() 中设置 metrics=['acc'] 或者 ['accuracy'],会影响 model.fit() 生成的 log,callbacks.ModelCheckp ...

  8. TensorFlow 2.7 正式版上线,改进 TF/Keras 调试,支持 Jax 模型到 TensorFlow Lite转换

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自 | 机器之心 TensorFlow2.7 正式发布,新版本包括对 tf.kera ...

  9. 【tf.keras】tf.keras使用tensorflow中定义的optimizer

    我的 tensorflow+keras 版本: print(tf.VERSION) # '1.10.0' print(tf.keras.__version__) # '2.1.6-tf' tf.ker ...

最新文章

  1. python input与返回值-python中使用input()函数获取用户输入值方式
  2. springboot-web开发(静态资源)
  3. linux 账号密码 字段,详解Linux中的用户密码管理命令passwd和change
  4. android 回归测试,自动遍历回归测试工具
  5. 在Qt界面中显示OpenCV图像
  6. jira7.3.6的安装步骤
  7. Sqlite 对数据进行增删改查
  8. java页面左右飘窗_页面飘窗设计
  9. 百度收购91无线,效果未必如愿
  10. halo博客系统升级
  11. Linux 如何查看内存使用情况
  12. 骑士人才招聘系统源码SE版 v3.16.0
  13. Amlogic Linux系列(一)S912盒子刷Khadas ubuntu系统
  14. uni-app中使用video.js
  15. 集成电路测试简介(2)
  16. 2020年9-12月份精彩文章分类汇总
  17. 微信小程序使用微信服务号推送消息
  18. 一个“好”的数据分析师是怎样炼成的?
  19. 哈斯HASS驱动器电源维修HASS40HP/20HP
  20. FART一键刷机脚本

热门文章

  1. 关于esp32蓝牙模块的使用——esp32学习笔记
  2. Arduino制作俄罗斯方块小游戏(一)整体设计思路
  3. 【广告架构day1】爱奇艺广告系统的演进之路:实践中的一些经验
  4. 10分钟看完,一文教你Docker 从入门到精通(值得收藏的教程)
  5. 根据GEOHASH,查找附近的人,判断距离远
  6. 虚幻5新特性之EnhancedInput
  7. 2022国赛数学建模思路 - 复盘:生成规划模型
  8. Android 项目集成有米 SDK 添加广告
  9. 最新2022年高职大数据国赛任务书详解与模拟练习
  10. spring data JPA常用注解