今天,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 行代码带你入门相关推荐

  1. 《Springboot极简教程》继承WebMvcConfigurerAdapter: 一行代码写Controller

    文章概要 registry.addViewController("/login").setViewName("login"); 常用的写Controller类方 ...

  2. 《Node.js 极简教程》 东海陈光剑

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. https://nodejs. ...

  3. 包管理工具conda极简教程

    包管理工具conda极简教程 conda的作用 Anaconda是目前非常流行的一个python包管理器,自带很多流行的python库,包括numpy,pandas等,当然还有conda.而Conda ...

  4. 《Kotlin极简教程》第三章 Kotlin基本数据类型

    正式上架:<Kotlin极简教程>Official on shelves: Kotlin Programming minimalist tutorial 京东JD:https://item ...

  5. 负载分析及问题排查极简教程

    作者 | Hollis ,来自 | Hollis 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时 ...

  6. 高效sql性能优化极简教程

    一,sql性能优化基础方法论 对于功能,我们可能知道必须改进什么:但对于性能问题,有时我们可能无从下手.其实,任何计算机应用系统最终队可以归结为: cpu消耗 内存使用 对磁盘,网络或其他I/O设备的 ...

  7. 写一个操作系统有多难?自制 os 极简教程

    不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...

  8. CentOS安装使用.netcore极简教程(免费提供学习服务器)

    本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...

  9. 《Kotlin 极简教程 》第5章 集合类

    <Kotlin 极简教程 >第5章 集合类 <Kotlin极简教程>正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的 ...

最新文章

  1. Android listview viewholder
  2. OpenSUSE 11 安装Qt5.0,失败,失败,失败,留个坑,以后来填,万一实现了呢
  3. Apache支持多端口配置处理
  4. MySQL 8.0 首个自适应参数横空出世
  5. 智能音箱AEC中的回采信号
  6. could not create the java virtual machine启动eclipse报错
  7. 如何使用 Cisdem Video Converter 在Mac上将 MKV 转换为 MP4
  8. php十六进制转为ascii,16进制转换成ascii_16进制转ascii码转换工具_16进制转ascii
  9. 实验三 类与对象的定义和使用
  10. 怎么开启2345加速浏览器的过滤弹窗广告
  11. 关闭Excel2016的动画效果
  12. 在Windows系统中安装CentOS系统和gcc
  13. 网站SEO从入门到精通
  14. docker 简单教程
  15. 使用python获取中国证券投资基金业协会上数据
  16. Nginx性能调优,解决C10K问题
  17. 圣诞节老人界面(动画特效)
  18. mybatis countByExample Total: 1 返回 0
  19. 解决调试时候出现的“Encountered an improper argument”错误
  20. 【Python秘籍】十进制整数与二进制数的转换

热门文章

  1. Axis 实现的SOAP附件的传输
  2. 利用tcpdump抓取mysql sql语句
  3. 使用阿里云ACM简化你的Spring Cloud微服务环境配置管理
  4. 【LeetCode OJ 136】Single Number
  5. Zephir入门 —— 语法篇
  6. Grid_Oracle Grid Infrastructure概念介绍(概念)
  7. rsynv+inotify触发试实时同步
  8. 常见的网络加速及优化控制管理—Vecloud
  9. 面向对象第四单元(UML)总结体会课程总结
  10. 发布webservice之后调用不通