AI ninja project [day 21] 自动编码器 Autoencoders

可以先看看Autoencoders的构造,
https://ithelp.ithome.com.tw/upload/images/20210921/20122678ZhoXpwCwla.jpg

将原始的numpy array 或是tensor(可能是图片、音乐或是一串数字特徵),
利用编码器层转换成降维的压缩资讯,
再利用解码器扩展成原来的维度。

参考页面:
https://www.tensorflow.org/tutorials/generative/autoencoder?hl=zh_tw

参考colab:
https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/generative/autoencoder.ipynb?hl=zh_tw

官网的攻略主要有三个范例,
可以由第一个范例发现,通过了Autoencoders之後,
图片会变得比较模糊。
而第二个范例是说明如何来使用Autoencoders去噪。

这里是看到三个范例的用法,
利用心电图资料集来建立区分正常的心电图及异常的心电图。

载入资料集,可以发现140的栏位为label,1代表正常的心电图,
0代表异常,而前面栏位的特徵是由心电图转换而来的:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678sTjXst6JrB.png

切分训练集 及 测试集,以及各自的标签:
https://ithelp.ithome.com.tw/upload/images/20210921/201226787xZ2KK8CG7.png

将训练集 及 测试集进行正规化,特徵都介於0-1之间:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678UmwflmrrA0.png

我们之後只拿正常的心电图来训练,
所以重点在normal_train_data、normal_test_data那两行:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678jraJg54JBp.png

我们可以先查看一张正常的心电图:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678KgvbEDjYvF.png

以及一张异常的心电图:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678WlIjQeWA1M.png

搭建 Autoencoders,
优化器用adam,损失函数用mae:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678iVfzE4F2A4.png

进行训练:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678DUFl9bmub6.png

将损失函数作图:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678put9k7AP6I.png

以预测值及正常心电图的平均绝对误差作图:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678xCcaDquJMo.png

以平均绝对误差的平均值加上平均绝对误差的标准差当作判断心电图是否正常的阈值:
https://ithelp.ithome.com.tw/upload/images/20210921/2012267860N1YX38E2.png
(选定标准可以自己建立,我是认为如果用p value说不定也可以用来建立判断标准)

那我们可以预测心电图是否异常:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678XOhe5Iv2A6.png

查看模型准确度:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678Ty81PvSZvV.png

参考资料:
https://blog.keras.io/building-autoencoders-in-keras.html


<<:  Normal Map

>>:  CSS微动画 - Loading来了!九宫格可以很多变化

补充: 建立 Todo list 画面

发现昨天的介绍中漏掉新增 Todo 的画面是怎麽来的,补充一下。 安装 React Material...

Rust-并行&并发(二)

channel 通常channel都是搭配并行使用,没有使用并行就没有使用channel的意义 「别...

day30 Kotlin coroutine 结赛统整

有人说作为新手不好理解,我觉得蛮正常的,一来我中文其实不好,二来要理解新概念只用看的其实不够,最好是...

【3】训练前先暖身 - 学习率 Warm-up 策略

Colab连结 Warm-up 训练是由这篇 Paper 提出的一种方法,主要的想法是提供模型在正式...

Annotation Processor 雏形实作

Auto Service Setup Auto Service 可以帮我们注册 Annotation...