最近Tensorflow相继推出了alpha和beta两个版本,这两个都属于tensorflow2.0版本;早听说新版做了很大的革新,今天就来用一下看看

这里还是使用MNSIT数据集进行测试

导入必要的库

import tensorflow as tf
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics

数据的准备

(xs, ys),_ = datasets.mnist.load_data()
print('datasets:', xs.shape, ys.shape, xs.min(), xs.max())
xs = tf.convert_to_tensor(xs, dtype=tf.float32) / 255.
db = tf.data.Dataset.from_tensor_slices((xs,ys))
db = db.batch(32).repeat(10)

网络结构和优化器准备

network = Sequential([layers.Dense(256, activation='relu'),
layers.Dense(256, activation='relu'),
layers.Dense(256, activation='relu'),
layers.Dense(10)])
network.build(input_shape=(None, 28*28))
network.summary()
optimizer = optimizers.SGD(lr=0.01)
acc_meter = metrics.Accuracy()

对数据集进行迭代

for step, (x,y) in enumerate(db):
with tf.GradientTape() as tape:
# [b, 28, 28] => [b, 784]
x = tf.reshape(x, (-1, 28*28))
# [b, 784] => [b, 10]
out = network(x)
# [b] => [b, 10]
y_onehot = tf.one_hot(y, depth=10)
# [b, 10]
loss = tf.square(out-y_onehot)
# [b]
loss = tf.reduce_sum(loss) / 32
acc_meter.update_state(tf.argmax(out, axis=1), y)
grads = tape.gradient(loss, network.trainable_variables)
optimizer.apply_gradients(zip(grads, network.trainable_variables))
if step % 200==0:
print(step, 'loss:', float(loss), 'acc:', acc_meter.result().numpy())
acc_meter.reset_states()

最终的训练结果

Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) multiple 200960
_________________________________________________________________
dense_1 (Dense) multiple 65792
_________________________________________________________________
dense_2 (Dense) multiple 65792
_________________________________________________________________
dense_3 (Dense) multiple 2570
=================================================================
Total params: 335,114
Trainable params: 335,114
Non-trainable params: 0
_________________________________________________________________
0 loss: 1.6250096559524536 acc: 0.125
200 loss: 0.4169953465461731 acc: 0.68828124
400 loss: 0.3840298056602478 acc: 0.84796876
600 loss: 0.3416569232940674 acc: 0.8721875
800 loss: 0.26919665932655334 acc: 0.898125
1000 loss: 0.3009098470211029 acc: 0.8985937
1200 loss: 0.2646633982658386 acc: 0.9103125
1400 loss: 0.22533166408538818 acc: 0.91765624
1600 loss: 0.18222002685070038 acc: 0.9165625
1800 loss: 0.18201570212841034 acc: 0.9290625
2000 loss: 0.19700995087623596 acc: 0.94484377
2200 loss: 0.14550982415676117 acc: 0.93125
2400 loss: 0.20129463076591492 acc: 0.9265625
2600 loss: 0.20377759635448456 acc: 0.93921876
2800 loss: 0.1372058093547821 acc: 0.93859375
3000 loss: 0.2261861264705658 acc: 0.93359375
3200 loss: 0.1720336377620697 acc: 0.940625
3400 loss: 0.12401969730854034 acc: 0.93953127
3600 loss: 0.10386896133422852 acc: 0.9401562
3800 loss: 0.16028286516666412 acc: 0.95734376
4000 loss: 0.17534957826137543 acc: 0.95171875
4200 loss: 0.14097453653812408 acc: 0.940625
4400 loss: 0.14199058711528778 acc: 0.9490625
4600 loss: 0.19402430951595306 acc: 0.94671875
4800 loss: 0.15967118740081787 acc: 0.94625
5000 loss: 0.1375979483127594 acc: 0.953125
5200 loss: 0.22316312789916992 acc: 0.9453125
5400 loss: 0.21779394149780273 acc: 0.9501563
5600 loss: 0.08099132776260376 acc: 0.9632813
5800 loss: 0.15826722979545593 acc: 0.9603125
6000 loss: 0.11169645190238953 acc: 0.95140624
6200 loss: 0.16848763823509216 acc: 0.95203125
6400 loss: 0.10312280058860779 acc: 0.9571875
6600 loss: 0.12469235062599182 acc: 0.9521875
6800 loss: 0.1130545362830162 acc: 0.9557812
7000 loss: 0.10152068734169006 acc: 0.95921874
7200 loss: 0.2921682596206665 acc: 0.9484375
7400 loss: 0.12305493652820587 acc: 0.9625
7600 loss: 0.13934454321861267 acc: 0.97
7800 loss: 0.07814794033765793 acc: 0.9571875
8000 loss: 0.16721022129058838 acc: 0.95921874
8200 loss: 0.0795113667845726 acc: 0.9632813
8400 loss: 0.07537689059972763 acc: 0.9557812
8600 loss: 0.11197802424430847 acc: 0.9585937
8800 loss: 0.12252026051282883 acc: 0.96203125
9000 loss: 0.13232024013996124 acc: 0.9578125
9200 loss: 0.08134811371564865 acc: 0.9590625
9400 loss: 0.07900199294090271 acc: 0.973125
9600 loss: 0.18293496966362 acc: 0.9671875
9800 loss: 0.04652725160121918 acc: 0.9609375
10000 loss: 0.16443191468715668 acc: 0.9615625
10200 loss: 0.1063765436410904 acc: 0.9640625
10400 loss: 0.11965180188417435 acc: 0.95890623
10600 loss: 0.07027075439691544 acc: 0.96796876
10800 loss: 0.15515664219856262 acc: 0.961875
11000 loss: 0.07982166111469269 acc: 0.9584375
11200 loss: 0.09907206147909164 acc: 0.9715625
11400 loss: 0.10707013309001923 acc: 0.9734375
11600 loss: 0.13629364967346191 acc: 0.9646875
11800 loss: 0.09981581568717957 acc: 0.96515626
12000 loss: 0.07304492592811584 acc: 0.96734375
12200 loss: 0.065020851790905 acc: 0.96375
12400 loss: 0.13698126375675201 acc: 0.96671873
12600 loss: 0.17877255380153656 acc: 0.96546876
12800 loss: 0.10601920634508133 acc: 0.9625
13000 loss: 0.0823143720626831 acc: 0.96765625
13200 loss: 0.15889227390289307 acc: 0.974375
13400 loss: 0.10676314681768417 acc: 0.9715625
13600 loss: 0.08510202169418335 acc: 0.9684375
13800 loss: 0.08974016457796097 acc: 0.969375
14000 loss: 0.05767156183719635 acc: 0.9678125
14200 loss: 0.21300190687179565 acc: 0.96796876
14400 loss: 0.08092547953128815 acc: 0.97078127
14600 loss: 0.17201107740402222 acc: 0.96515626
14800 loss: 0.07620300352573395 acc: 0.965625
15000 loss: 0.09742768108844757 acc: 0.9767187
15200 loss: 0.09786351025104523 acc: 0.97484374
15400 loss: 0.09377723932266235 acc: 0.9689062
15600 loss: 0.08926095068454742 acc: 0.970625
15800 loss: 0.08965814113616943 acc: 0.9703125
16000 loss: 0.1047641858458519 acc: 0.96734375
16200 loss: 0.0918944925069809 acc: 0.97328126
16400 loss: 0.08902822434902191 acc: 0.9709375
16600 loss: 0.06524112075567245 acc: 0.96421874
16800 loss: 0.09127143025398254 acc: 0.975
17000 loss: 0.09830828011035919 acc: 0.9784375
17200 loss: 0.030347194522619247 acc: 0.97125
17400 loss: 0.07646052539348602 acc: 0.9728125
17600 loss: 0.09391230344772339 acc: 0.9717187
17800 loss: 0.05943562090396881 acc: 0.9714062
18000 loss: 0.08575735241174698 acc: 0.9734375
18200 loss: 0.09358179569244385 acc: 0.973125
18400 loss: 0.0565657876431942 acc: 0.97015625
18600 loss: 0.04309214651584625 acc: 0.96984375

总结

整体上使用起来比1.X版本有顺手多了,感觉和pytorch差不多,使用起来更加的丝滑流畅,真的是对这个版本爱不释手了,如果要是再有一张性能好一些的显卡就更好了

笔记3:Tensorflow2.0实战之MNSIT数据集的更多相关文章

  1. Google老师亲授 TensorFlow2.0实战: 入门到进阶

    Google老师亲授 TensorFlow2.0 入门到进阶 课程以Tensorflow2.0框架为主体,以图像分类.房价预测.文本分类等项目为依托,讲解Tensorflow框架的使用方法,同时学习到 ...

  2. [TensorFlow2.0]-Fashion-MNIST本地数据集及fit_generator()的使用

    本人人工智能初学者,现在在学习TensorFlow2.0,对一些学习内容做一下笔记.笔记中,有些内容理解可能较为肤浅.有偏差等,各位在阅读时如有发现问题,请评论或者邮箱(右侧边栏有邮箱地址)提醒. 若 ...

  3. tensorflow2.0学习笔记

    今天我们开始学习tensorflow2.0,用一种简单和循循渐进的方式,带领大家亲身体验深度学习.学习的目录如下图所示: 1.简单的神经网络学习过程 1.1张量生成 1.2常用函数 1.3鸢尾花数据读 ...

  4. Google工程师亲授 Tensorflow2.0-入门到进阶

    第1章 Tensorfow简介与环境搭建 本门课程的入门章节,简要介绍了tensorflow是什么,详细介绍了Tensorflow历史版本变迁以及tensorflow的架构和强大特性.并在Tensor ...

  5. TensorFlow2.0(9):TensorBoard可视化

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  6. TensorFlow2.0(11):tf.keras建模三部曲

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  7. 基于tensorflow2.0 使用tf.keras实现Fashion MNIST

    本次使用的是2.0测试版,正式版估计会很快就上线了 tf2好像更新了蛮多东西 虽然教程不多 还是找了个试试 的确简单不少,但是还是比较喜欢现在这种写法 老样子先导入库 import tensorflo ...

  8. [笔记][Java7并发编程实战手冊]3.8 并发任务间的数据交换Exchanger

    [笔记][Java7并发编程实战手冊]系列文件夹 简单介绍 Exchanger 是一个同步辅助类.用于两个并发线程之间在一个同步点进行数据交换. 同意两个线程在某一个点进行数据交换. 本章exchan ...

  9. ETL工具--DataX3.0实战

    DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem)之间的数据交换,由淘宝数据平台部门完成. DataX ...

  10. [笔记][Java7并发编程实战手冊]3.4 等待多个并发事件的完毕CountDownLatch倒计数闭锁

    [笔记][Java7并发编程实战手冊]系列文件夹 简单介绍 本文学习CountDownLatch 倒计数闭锁. 本人英文不好.靠机器翻译,然后有一段非常形象的描写叙述,让我把它叫为倒计数 用给定的计数 ...

随机推荐

  1. Go Web项目结构 + 基础代码

    Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. 因为我是从Java转过来的,其实这种包的结构与Java的类似 ...

  2. Hugging News #0821: Hugging Face 完成 2.35 亿美元 D 轮融资

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  3. DHorse v1.3.2 发布,基于 k8s 的发布平台

    版本说明 新增特性 构建版本.部署应用时的线程池可配置化: 优化特性 构建版本跳过单元测试: 解决问题 解决Vue应用详情页面报错的问题: 解决Linux环境下脚本运行失败的问题: 解决下载Maven ...

  4. 使用C#发送邮件支持 Implicit SSL

    安装Package: Install-Package AIM 使用下面的代码发送: class Mail { private static string mailAddress = "{yo ...

  5. JDK8升级JDK11最全实践干货来了

    1.前言 截至目前(2023年),Java8发布至今已有9年,2018年9月25日,Oracle发布了Java11,这是Java8之后的首个LTS版本.那么从JDK8到JDK11,到底带来了哪些特性呢 ...

  6. @RequiredArgsConstructor和@Authwired

    我们在java后端书写接口时,对service层成员变量的注入和使用有以下两种实现方式: 1) @RequiredArgsConstructor import lombok.RequiredArgsC ...

  7. .NET静态代码织入——肉夹馍(Rougamo)发布2.0

    肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...

  8. 挑战程序设计竞赛 2.2 poj 3040 Allowance 贪心

    https://vjudge.csgrandeur.cn/problem/POJ-3040 /* 作为创纪录的牛奶产量的奖励,约翰决定每周给贝西一小笔零用钱.FJ拥有一组N(1 <= N < ...

  9. 关于AI时代的程序架构的变化

    以ChatGPT为代表的AI出现,表示着AI的零点时刻已经突破.现在AI的使用已经不用再多说了,实际上是已经侵入到各行各业.所有人都在疯狂寻找本行业AI的使用场景,这样的盛景只在互联网刚出现的时候能感 ...

  10. 分享一次公司晋级考试的SQL题目,非常有趣的案例(postgresql 标量子查询 where lie 谓词过滤条件)

    同事今天晋级高级工程师考试,发来一道公司出题目让我帮忙进行优化,其中场景二的案例非常有意思. 题目内容如下: 原始SQL: scott=> explain analyze scott-> ...