TensorFlow 2.0 极简教程,不到 20 行代码带你入门
今天,Google 发布了 TensorFlow 2.0 的 alpha 版本,真是千呼万唤始出来,对应的 2.0 官方教程 也释出,本文翻译了官方最简单的一个教程,带你入门 TensorFlow。
有条件的人,可以直接在 colab 上运行代码:https://colab.research.google.com/notebooks/welcome.ipynb
对 TensorFlow 比较熟悉或者已经使用过 tf.keras API 的可以看 进阶教程。
由于 TensorFlow 升级到了 2.0 alpha 版本,因此需要先安装:
# CPU 版本
pip install tensorflow==2.0.0-alpha0# GPU 版本
pip install tensorflow-gpu==2.0.0-alpha0
开始导入
from __future__ import absolute_import, division, print_functionimport tensorflow as tf
载入 MNIST 数据集,并将整型转换为浮点型,除以 255 是为了归一化。
mnist = tf.keras.datasets.mnist(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
也可以使用 TensorFlow 新出的 tensorflow-datasets
载入数据集,传送门。
使用 tf.keras.Sequential
建立模型,并且选择优化器和损失函数
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28, 28)),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
代码解释:
Sequential
用于建立序列模型Flatten
层用于展开张量,input_shape
定义输入形状为 28x28 的图像,展开后为 28*28 的张量。Dense
层为全连接层,输出有 128 个神经元,激活函数使用relu
。Dropout
层使用 0.2 的失活率。- 再接一个全连接层,激活函数使用
softmax
,得到对各个类别预测的概率。 - 优化器选择
Adam
优化器。 - 损失函数使用
sparse_categorical_crossentropy
,还有一个损失函数是categorical_crossentropy
,两者的区别在于输入的真实标签的形式,sparse_categorical
输入的是整形的标签,例如 [1, 2, 3, 4],categorical
输入的是 one-hot 编码的标签。
然后训练评估模型
model.fit(x_train, y_train, epochs=5)model.evaluate(x_test, y_test)
Epoch 1/5
60000/60000 [==============================] - 8s 137us/sample - loss: 0.2946 - accuracy: 0.9139
Epoch 2/5
60000/60000 [==============================] - 7s 124us/sample - loss: 0.1423 - accuracy: 0.9578
Epoch 3/5
60000/60000 [==============================] - 8s 131us/sample - loss: 0.1059 - accuracy: 0.9677
Epoch 4/5
60000/60000 [==============================] - 8s 127us/sample - loss: 0.0872 - accuracy: 0.9729
Epoch 5/5
60000/60000 [==============================] - 7s 125us/sample - loss: 0.0739 - accuracy: 0.9768
10000/10000 [==============================] - 1s 87us/sample - loss: 0.0747 - accuracy: 0.9783
[0.07466811984921806, 0.9783]
fit
用于训练模型,对训练数据遍历一次为一个 epoch,这里遍历 5 次。
evaluate
用于评估模型,返回的数值分别是损失和指标。
可以看到,我们训练的图像分类器在 MNIST 上有接近 98% 的准确率。
TensorFlow 2.0 极简教程,不到 20 行代码带你入门相关推荐
- 《Springboot极简教程》继承WebMvcConfigurerAdapter: 一行代码写Controller
文章概要 registry.addViewController("/login").setViewName("login"); 常用的写Controller类方 ...
- 《Node.js 极简教程》 东海陈光剑
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. https://nodejs. ...
- 包管理工具conda极简教程
包管理工具conda极简教程 conda的作用 Anaconda是目前非常流行的一个python包管理器,自带很多流行的python库,包括numpy,pandas等,当然还有conda.而Conda ...
- 《Kotlin极简教程》第三章 Kotlin基本数据类型
正式上架:<Kotlin极简教程>Official on shelves: Kotlin Programming minimalist tutorial 京东JD:https://item ...
- 负载分析及问题排查极简教程
作者 | Hollis ,来自 | Hollis 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时 ...
- 高效sql性能优化极简教程
一,sql性能优化基础方法论 对于功能,我们可能知道必须改进什么:但对于性能问题,有时我们可能无从下手.其实,任何计算机应用系统最终队可以归结为: cpu消耗 内存使用 对磁盘,网络或其他I/O设备的 ...
- 写一个操作系统有多难?自制 os 极简教程
不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...
- CentOS安装使用.netcore极简教程(免费提供学习服务器)
本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...
- 《Kotlin 极简教程 》第5章 集合类
<Kotlin 极简教程 >第5章 集合类 <Kotlin极简教程>正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的 ...
最新文章
- Android listview viewholder
- OpenSUSE 11 安装Qt5.0,失败,失败,失败,留个坑,以后来填,万一实现了呢
- Apache支持多端口配置处理
- MySQL 8.0 首个自适应参数横空出世
- 智能音箱AEC中的回采信号
- could not create the java virtual machine启动eclipse报错
- 如何使用 Cisdem Video Converter 在Mac上将 MKV 转换为 MP4
- php十六进制转为ascii,16进制转换成ascii_16进制转ascii码转换工具_16进制转ascii
- 实验三 类与对象的定义和使用
- 怎么开启2345加速浏览器的过滤弹窗广告
- 关闭Excel2016的动画效果
- 在Windows系统中安装CentOS系统和gcc
- 网站SEO从入门到精通
- docker 简单教程
- 使用python获取中国证券投资基金业协会上数据
- Nginx性能调优,解决C10K问题
- 圣诞节老人界面(动画特效)
- mybatis countByExample Total: 1 返回 0
- 解决调试时候出现的“Encountered an improper argument”错误
- 【Python秘籍】十进制整数与二进制数的转换