• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • Tensorflow in R 系列(1) :数字图片分类

      Tensorflow in R 系列(1) :数字图片分类

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2019年7月4日
      测试开头
      01
      开篇 Introduction      


      • Tensorflow in R 系列,将分享如何使用R语言在Tensorflow/Keras 框架中训练深度学习模型。

      • MNIST 全称为 Modified National Institute of Standards and Technology。这个名词一点也不重要。

      • MNIST 数据为 7万张(6万张训练+1万张测试 0-9的手写数字图片。建立模型预测图片中的数字是多少。



      安装 R 和 R studio

      此次省略300字,建议使用云计算平台如Kaggle Kernel/Google Codelab/Google Cloud 等


      安装 keras package

      Tensorflow in R 系列(1) :数字图片分类

      查看 tensorflow 版本

      Tensorflow in R 系列(1) :数字图片分类


      02
      导入数据 Input data      

      导入4个数据集,分别为:

      • x_train:  6万张训练数字图片

      • y_train   6万个训练数字0-9标签

      • x_test:1万张测试数字图片

      • y_test:1万个测试数字0-9标签


      为什么有4个数据集 ?

      • 带x的通常为特征(feature)。带y的为标签(label)。

      • 训练数据是用来训练模型。测试数据不参加建模,而是模型建立后是用来测试模型的效果。

      Tensorflow in R 系列(1) :数字图片分类

      这些图片长这个样

      Tensorflow in R 系列(1) :数字图片分类

      Tensorflow in R 系列(1) :数字图片分类


      03
      数据处理 Data cleaning 

      reshape:将每个2维的28 × 28 的图片变成1维数据 1× 784 的数据

      rescale:将每个由0到255的像素(pixel)转为0到1:原来是0的,现在 0/255=0 原来是255的,现在255/255=1。原来为200,现在200/255=0.78

      Tensorflow in R 系列(1) :数字图片分类

      embedding:

      这里对标签作 0,1 embedding 处理。

      处理后 y_train 变成了 6万行 ,每行10 个 0或1 的数据。

      处理后 y_test 变成了 1万行 ,每行10 个 0或1 的数据

      Tensorflow in R 系列(1) :数字图片分类



      数据处理前

      • x_train: 6万张训练数字图片 60000 * 28 * 28 形状的 0-255的数字

      • y_train:6万个训练数字0-9标签 60000 形状的 0-9的数字

      • x_test:1万个测试数字图片 10000 * 28 * 28 形状的 0-255的数字

      • y_test:1万个测试数字0-9标签 10000 形状的 0-9的数字

      数据处理后

      • x_train: 6万张训练数字图片 60000 * 784 形状的 0到1的数字

      • y_train:6万个训练数字0-9标签 60000 * 10 形状的 0或1的数字

      • x_test:1万个测试数字图片 10000 * 784 形状的 0到1的数字

      • y_test:1万个测试数字0-9标签 10000 * 10 形状的 0或1的数字


      04
      建立模型 modeling      

      建立深度神经网络模型(deep neural network)

      网络结构介绍:

      输入层:每个图片的形状为784位数字的输入层

      第一层:使用 ‘relu’ 的256个tensor 的隐藏层 (relu 是什么?后续文章再聊)

      第二层:使用 ‘relu’ 的128个tensor 的隐藏层

      输出层:使用 ‘softmax’ 的 10个 加总为1 的 0到1的概率 的 输出层 (softmax 是什么?后续文章再聊)

      Tensorflow in R 系列(1) :数字图片分类

      神经网络型图:

      Tensorflow in R 系列(1) :数字图片分类

      神经网络公式:

      公式是我们设计模型的时候定义的。比如图中的模型。W11-W33 9个weight 和 b1-b3 3个bias 经过训练得出。所以模型训练的Learnable Parameters=9+3=12

      Tensorflow in R 系列(1) :数字图片分类

      模型的架构:

      Learnable_Parameters=input*output+bias

      第一层:使用’relu’ 的256个tensor 的隐藏层:

      Learnable_Parameters:200960=784*256 + 256

      第二层:使用’relu’的128个tensor 的隐藏层:

      Learnable_Parameters:32896=256*128+128

      输出层:使用 ‘softmax’ 的 10个 0到1的概率 的 输出层: 

      Learnable_Parameters :1290=128*10+10

      总Learnable_Parameters :

      235146=200960+32896+129

      Tensorflow in R 系列(1) :数字图片分类

      Tensorflow in R 系列(1) :数字图片分类


      05
      Complie模型    

      loss function是categorial_crossentropy

      (loss function 是什么?后续文章再聊)

      optimizer是optimize_rmsprop

      (optimizer 是什么?后续文章再聊)

      metrics 为 accuracy,metrics是评估模型的指标。大多数情况都选accuracy。accuracy=正确预测的个数/总预测个数

      Tensorflow in R 系列(1) :数字图片分类


      06
      训练模型 trainning      

      一堆数据处理转换。模型设计后 。终于可以开始训练模型了。

      x_train为训练数据集特征

      (6万张照片)

      y_train 为训练数据集标签

      (6万个数字)

      每次读入128张图片。训练10次。

      6万张照片80%用来训练。20%用来验证。

      训练时间大概为5分钟。

      Tensorflow in R 系列(1) :数字图片分类


      07
      模型效果 performance

      可见 经过 10次训练后。最终在验证集的accuracy表现为97%。从图中可见其实经过6次的训练。在验证集的表现以达到97%

      Tensorflow in R 系列(1) :数字图片分类

      Tensorflow in R 系列(1) :数字图片分类

      08
      模型对比 benchmark      

      Naive benchmark:

      如果我们什么都不知道,瞎猜0-9的话。准确度是10%

      决策树模型 Decision tree benchmark:

      使用决策树模型。准确度是61%。训练时间大概为10分钟。

      随机森林模型 random forest benchmark:

      使用随机森林模型。准确度是92%。训练时间大概为15分钟

      tensorflow神经网络模型的准确度是97%

      Tensorflow in R 系列(1) :数字图片分类


      Tensorflow in R 系列(1) :数字图片分类


      09
      总结 summary      

       使用tensorflow 神经网络模型将准确率提高到97%。可以得到如此高的准确率,主要是图片比较简单。只有0-9的标准数字。对于更加困难的问题。比如在自动驾驶中需要精准的物体识别等问题。将需要更加复杂的神经网络模型。

      代码:https://tduan.netlify.com/post/tensorflow-in-r-1-mnist-image-classification/

      如果您喜欢本文。请分享出去。

      后续分享:

      Tensorflow in R 系列(2) :时装分类 Fashion-MNIST image classification with CNN

      Tensorflow in R 系列(1) :数字图片分类

      Tensorflow in R 系列(1) :数字图片分类

      转自:TFUG深圳微信公众号

      公众号推荐:

      珠海市岭南大数据研究院(笔者工作的研究机构,现在诚聘各类数据和AI人才,有意向者,请添加我的微信:luqin360,大家一起来做些有意思的项目和产品)是一家以高端人才引进培养、前沿技术研究及产业孵化为宗旨的新型研究机构。研究院更多了解,请识别下面二维码。

      Tensorflow in R 系列(1) :数字图片分类

      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      当分隔符撞上正则表达式
      2019年7月4日

      下一篇文章

      再玩批量重命名
      2019年7月4日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?