2. 手写字体识别

  • 数据载入
  • 搭建全连接网络
  • 计算输出和 Loss
  • 计算梯度与回传
  • Loop
  • 完整代码

数据载入

import os
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, optimizers, datasetsos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'(x, y), (x_val, y_val) = datasets.mnist.load_data()    # train and test
x = tf.convert_to_tensor(x, dtype=tf.float32) / 255.   # normalize (broadcasting)
y = tf.convert_to_tensor(y, dtype=tf.int32)
y = tf.one_hot(y, depth=10)
print(x.shape, y.shape)   # (60000, 28, 28) (60000, 10)
train_dataset = tf.data.Dataset.from_tensor_slices((x, y))
train_dataset = train_dataset.batch(200)   # setting batch# for step, (x, y) in enumerate(train_dataset):
#     print (step, x.shape, y.shape)
0 (200, 28, 28) (200, 10)
1 (200, 28, 28) (200, 10)
2 (200, 28, 28) (200, 10)
3 (200, 28, 28) (200, 10)
4 (200, 28, 28) (200, 10)
5 (200, 28, 28) (200, 10)
6 (200, 28, 28) (200, 10)
......
295 (200, 28, 28) (200, 10)
296 (200, 28, 28) (200, 10)
297 (200, 28, 28) (200, 10)
298 (200, 28, 28) (200, 10)
299 (200, 28, 28) (200, 10)

搭建全连接网络

out=relu{relu{relu{x@w1+b1}@w2+b2}@w3+b3}out = relu\{relu\{relu\{x@w_1+b_1\}@w_2+b_2\}@w_3+b_3\}out=relu{relu{relu{x@w1​+b1​}@w2​+b2​}@w3​+b3​}

model = keras.Sequential([layers.Dense(512, activation='relu'),layers.Dense(256, activation='relu'),layers.Dense(10)])optimizer = optimizers.SGD(learning_rate=0.001)

计算输出和 Loss

with tf.GradientTape() as tape:
# [b, 28, 28] => [b, 784]x = tf.reshape(x, (-1, 28 * 28))# Step1. compute output# [b, 784] => [b, 10]out = model(x)# Step2. compute lossloss = tf.reduce_sum(tf.square(out - y)) / x.shape[0]

计算梯度与回传

# Step3. optimize and update w1, w2, w3, b1, b2, b3
grads = tape.gradient(loss, model.trainable_variables)
# w' = w - lr * grad
optimizer.apply_gradients(zip(grads, model.trainable_variables))

Loop

def train_epoch(epoch):# Step4.loopfor step, (x, y) in enumerate(train_dataset):with tf.GradientTape() as tape:# [b, 28, 28] => [b, 784]x = tf.reshape(x, (-1, 28 * 28))# Step1. compute output# [b, 784] => [b, 10]out = model(x)# Step2. compute lossloss = tf.reduce_sum(tf.square(out - y)) / x.shape[0]# Step3. optimize and update w1, w2, w3, b1, b2, b3grads = tape.gradient(loss, model.trainable_variables)# w' = w - lr * gradoptimizer.apply_gradients(zip(grads, model.trainable_variables))if step % 100 == 0:print(epoch, step, 'loss:', loss.numpy())

完整代码

import os
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, optimizers, datasetsos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'(x, y), (x_val, y_val) = datasets.mnist.load_data()
x = tf.convert_to_tensor(x, dtype=tf.float32) / 255.
y = tf.convert_to_tensor(y, dtype=tf.int32)
y = tf.one_hot(y, depth=10)
print(x.shape, y.shape)
train_dataset = tf.data.Dataset.from_tensor_slices((x, y))
train_dataset = train_dataset.batch(200)model = keras.Sequential([layers.Dense(512, activation='relu'),layers.Dense(256, activation='relu'),layers.Dense(10)])optimizer = optimizers.SGD(learning_rate=0.001)def train_epoch(epoch):# Step4.loopfor step, (x, y) in enumerate(train_dataset):with tf.GradientTape() as tape:# [b, 28, 28] => [b, 784]x = tf.reshape(x, (-1, 28 * 28))# Step1. compute output# [b, 784] => [b, 10]out = model(x)# Step2. compute lossloss = tf.reduce_sum(tf.square(out - y)) / x.shape[0]# Step3. optimize and update w1, w2, w3, b1, b2, b3grads = tape.gradient(loss, model.trainable_variables)# w' = w - lr * gradoptimizer.apply_gradients(zip(grads, model.trainable_variables))if step % 100 == 0:print(epoch, step, 'loss:', loss.numpy())def train():for epoch in range(30):train_epoch(epoch)if __name__ == '__main__':train()

tensorflow 2.0 实战-Minst相关推荐

  1. 资源|2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 2019 年 10 月,谷歌正式宣布,开源机器学习库 TensorFlow 2.0 现在 ...

  2. 400页《TensorFlow 2.0 深度学习算法实战》中文版教材免费下载(附随书代码+pdf)...

    Tensorflow自谷歌提出以来就成为最受欢迎的深度学习框架之一,到目前为止也已经被下载超过 4000 万次.其中TensorFlow2.0更是修复之前非常多的不人性的特性,备大家欢迎. 今天给大家 ...

  3. 基于TensorFlow 2.0的中文深度学习开源书来了!GitHub趋势日榜第一,斩获2K+星

    十三 发自 凹非寺  量子位 报道 | 公众号 QbitAI TensorFlow 2.0 发布已有一个半月之久,你会用了吗? 近日,一个叫做深度学习开源书的项目在火了.GitHub趋势日榜排名全球第 ...

  4. 深度学习实战—基于TensorFlow 2.0的人工智能开发应用

    作者:辛大奇 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-10-01 深度学习实战-基于TensorFlow 2.0的人工智能开发应用

  5. TensorFlow 2.0深度学习案例实战

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 基于TensorFlow 2.0正式版, 理论与实战结合,非常适合入门学习! 这是一本面向人工 ...

  6. 第五章:Tensorflow 2.0 利用十三层卷积神经网络实现cifar 100训练(理论+实战)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/LQ_qing/article/deta ...

  7. 官方 | TensorFlow 2.0分布式训练教程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|计算机视觉联盟 总览 tf.distribute.Stra ...

  8. TensorFlow 2.0+Keras 防坑指南

    2019独角兽企业重金招聘Python工程师标准>>> TensorFlow 2.0是对1.x版本做了一次大的瘦身,Eager Execution默认开启,并且使用Keras作为默认 ...

  9. TensorFlow 2.0不好用?会了是“真香”!

    记得 TensorFlow 2.0 刚发布时,一票开发者都在疯狂吐槽:官方文档不好找,bug 没有及时修复和更新等等.尽管上线这么久,仍有大量开发者不愿从 1.x 升级,或从别的框架迁移过来. 事实上 ...

最新文章

  1. 如何提高Sprint Review的质量?
  2. 全新池化方法AdaPool | 让ResNet、DenseNet、ResNeXt等在所有下游任务轻松涨点
  3. Git无法检测到文件名大小写的更改
  4. 打印modal框中在线生成的二维码
  5. flink RPC(akka)
  6. 中怎么均化走线_PCB板上多长的走线才是传输线?答案是……
  7. 在服务器中开虚拟机,可以在云服务器上开虚拟机
  8. zookeeper+kafka+logstash+elasticsearc+kibana
  9. 表单验证的初步实现和省市级联
  10. C++中用函数模板实现和优化抽象操作
  11. linux c 代码分析工具,编程达人 分享几款Linux 下C/C++程序内存泄漏检查工具
  12. Django DEBUG=False
  13. IP65防水步进电机可以在什么环境使用?
  14. ADO.NET数据库编程
  15. 【免费】Discuz素材资源交易论坛整站源码/带数据整站源码打包
  16. 两个华为路由器实现MESH组网,WIFI信号无缝漫游
  17. linux下使用PulseAudio获取扬声器的音量和是否静音
  18. 中兴力维动环监控接线图_中兴力维传统动环监控系统解决方案
  19. 世界顶级黑客Kevin D.Mitnick教你如何在数字世界中真正隐形
  20. Lonza X-VIVO 15 无血清培养基使用攻略

热门文章

  1. Axure RP Pro 9.0.0.3646 中文特别版 Mac 交互原型设计工具
  2. 专科学前教育要上计算机课吗,大专学前教育主要学什么课程内容
  3. 关于double和float和int以及%f,%lf,%llf,%Lf以及printf和scanf的总结
  4. Mission Planner 二次开发之添加海康威视摄像机
  5. CSS-鼠标划过时的样式
  6. iOS 开发中实现打电话功能实用代码
  7. brew常用命令总结
  8. 【工作复盘】2020年10月8日 9月份工作复盘
  9. 字符串生成二维码图像(C++,Qt)
  10. 使用TestFlight邀请外部人员测试APP