如何使用TensorFlow追踪千年隼号

基于tensorflow的SSD+SORT多目标跟踪源码 来源https://blog.youkuaiyun.com/ycc2011/article/details/85094651 根据上面两个代码,自己修改了对应的检测和关联数据接口; !!!使用视频流作为数据输入,并输出对应的每帧图像到对应目录,同时显示追踪过程到屏幕上。具体可参考对应源码。 从文件夹中的notebook进入,修改对应视频数据流源地址和对应追踪关联后的输出数据。 我需要一些csdn下载积分供自己以后用,所以设置了分值。。。 立即下载

原文:Tracking the Millenium Falcon with Tensorflow
作者:Nick Bourdakos
译者:雁惊寒

摘要:本文以星球大战中的千年隼号为例,介绍了如何使用强大的PowerAI来进行对象检测。

1.png
活动中的自定义对象检测(完整视频地址)

当前,大多数的大型科技公司(如IBM、Google、Microsoft和Amazon)都有自己的视觉识别产品。一些小公司也提供了类似的产品,如Clarifai。但是他们都没有提供对象检测API。

下面两张图片都使用了相同的Watson Visual Recognition默认分类器进行标记。不过,第一张图片首先通过了一个对象检测模型。

2.png

对象检测比视觉识别先进得多。但是如果想要进行对象检测,你就不得不自己动手了。

根据不同的使用情况,可能并不需要自定义对象检测模型。 TensorFlow的对象检测API提供了一些基于COCO数据集的不同速度和准确度的模型。

这是COCO模型可检测对象的完整列表:

3.png

如果想要检测不在此列表中的东西,则必须构建自己的自定义对象检测器。

标注图片

训练自己的模型需要做很多工作。需要收集大量的图像,并标注它们。标注包括指定对象坐标和相应的标签。对于包含两个钛战机的图像,标注的结果是这样的:

<annotation>
    <folder>images</folder>
    <filename>image1.jpg</filename>
    <size>
        <width>1000</width>
        <height>563</height>
    </size>
    <segmented>0</segmented>
    <object>
        <name>Tie Fighter</name>
        <bndbox>
            <xmin>112</xmin>
            <ymin>281</ymin>
            <xmax>122</xmax>
            <ymax>291</ymax>
        </bndbox>
    </object>
    <object>
        <name>Tie Fighter</name>
        <bndbox>
            <xmin>87</xmin>
            <ymin>260</ymin>
            <xmax>95</xmax>
            <ymax>268</ymax>
        </bndbox>
    </object>
</annotation>

针对星球大战模型,我收集了308个图片,每张图片包含了两到三个对象。我建议针对每个对象找出的200-300个样本图片。

我们是否需要为这几百张图片写一大推的xml呢?

当然不用!有很多标注工具,比如labelImg和RectLabel。我使用的是RectLabel,但它只能在macOS上使用。不过,还是有很多工作要做的。我花了大约三四个小时的时间来标注整个数据集。创建标注时,请将其导出为PASCAL VOC格式。

在运行脚本准备数据之前,还需要做一些设置工作。

克隆代码库

从这里克隆代码库。目录结构如下所示:

models
|-- annotations
|   |-- label_map.pbtxt
|   |-- trainval.txt
|   `-- xmls
|       |-- 1.xml
|       |-- 2.xml
|       |-- 3.xml
|       `-- ...
|-- images
|   |-- 1.jpg
|   |-- 2.jpg
|   |-- 3.jpg
|   `-- ...
|-- object_detection
|   `-- ...
`-- ...

这里已经包含了所有的训练数据,开箱即用。但是如果要用自己的数据创建模型,那么需要将你自己的训练图像添加到images目录中,将XML标注添加到annotations/xmls目录中,然后更新trainval.txt和label_map.pbtxt。

trainval.txt是一个文件名列表,用于查找和关联JPG和XML文件。下面的trainval.txt列表让我们可以找到abc.jpg、abc.xml、123.jpg、123.xml、xyz.jpg和xyz.xml:

abc
123
xyz

注意:请确保JPG和XML文件的文件名除了扩展名之外是一样的。

label_map.pbtxt是我们要检测的对象列表。内容是这样的:

item {
  id: 1
  name: 'Millennium Falcon'
}

item {
  id: 2
  name: 'Tie Fighter'
}

运行脚本

首先,安装Python和pip,并安装脚本需要的组件:

pip install -r requirements.txt

在PYTHONPATH中加入models和models/slim:

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

重要提示:每次打开终端后都要运行一遍,或者添加到~/.bashrc文件中。

运行脚本:

python object_detection/create_tf_record.py

脚本运行结束之后,将会得到train.record和val.record文件。我们将用这两个文件来训练模型。

下载模型

即使使用多个GPU,从头开始训练对象检测器也可能需要数天的时间。为了加速训练,我们将采用一个在不同数据集上训练过的对象检测器,并重新设置它的一些参数来初始化我们的新模型。

你可以从这个模型集市上下载模型。每个模型的准确性和速度都不一样。我使用的是faster_rcnn_resnet101_coco。

把所有的model.ckpt文件提取出来并复制到代码库的根目录。

faster_rcnn_resnet101.config是faster_rcnn_resnet101_coco模型的配置文件。如果使用另一个模型,则可以在这里找到相对应的配置文件。

准备训练

运行下面的脚本,训练开始了!

python object_detection/train.py \
        --logtostderr \
        --train_dir=train \
        --pipeline_config_path=faster_rcnn_resnet101.config

注意:将pipeline_config_path替换为配置文件实际的路径。

global step 1:
global step 2:
global step 3:
global step 4:
...

好极了!开始运行了!

10分钟后。

global step 41:
global step 42:
global step 43:
global step 44:
...

电脑开始冒烟了

global step 71:
global step 72:
global step 73:
global step 74:
...

这东西要运行多久呢? 视频中使用的模型要运行22000步。如果使用的是MacBook Pro,假设每15秒左右完成一步,以这样的速度,大约需要三到四天的时间才能获得一个差不多的模型。太费时间了!!!

救世主PowerAI强势出击!

PowerAI

PowerAI让用户可以在配置了P100 GPU的IBM Power Systems上快速训练模型!

大概只用了一个小时的时间就训练了一万步。不过,这只用了一个GPU。 PowerAI的真正威力是能够以高达95%的效率在数百个GPU上进行分布式的深度学习。

在PowerAI的帮助下,IBM创造了在7个小时内识别一张新图像达到33.8%准确率的记录。它超过了微软以前的行业纪录,在10天内达到29.9%的准确率。

太快了!

创建一个Nimbix账号

Nimbix为开发者提供了在PowerAI平台上免费处理十个小时的试用帐户。你可以在这里进行注册。

注意:这个过程不是自动的,所以可能需要24小时才能审批通过。

申请通过后,你将收到一封电子邮件,其中包含有关确认和创建帐户的说明。

现在,你可以在这里登录了。

部署PowerAI Notebooks应用

首先搜索PowerAI Notebooks。

4.png

点击,然后选择 TensorFlow。

5.png

选择机器类型:32 thread POWER8, 128GB RAM, 1x P100 GPU w/NVLink (np8g1)。

6.png

服务器开启,将显示以下仪表板面板。当服务器的Status变为Processing时,就可以访问服务器了。

点击(click to show)获取密码。

然后点击Click here to connect启动Notebook。

7.png

使用用户名nimbix和先前提供的密码进行登录。

8.png

开始训练

点击New下拉菜单并选择Terminal,打开一个新的终端窗口。

9.png

跳出一个熟悉的界面:

10.png

注意:该终端可能不能在Safari中运行。

训练的步骤与我们在本地进行训练的步骤相同。如果你使用我的训练数据,那么可以克隆我的代码库:

git clone [https://github.com/bourdakos1/Custom-Object-Detection.git](https://github.com/bourdakos1/Custom-Object-Detection.git)

然后cd进入根目录:

cd Custom-Object-Detection

运行下面这个命令,下载我们之前提到的预先训练好的faster_rcnn_resnet101_coco模型。

wget [http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz](http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz)
tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz
mv faster_rcnn_resnet101_coco_11_06_2017/model.ckpt.* .

然后,再次设置PYTHONPATH,因为这是一个新的终端:

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

最后运行训练命令:

python object_detection/train.py \
        --logtostderr \
        --train_dir=train \
        --pipeline_config_path=faster_rcnn_resnet101.config

下载模型

数据越多,则需要的步骤也越多。我的模型在接近4500步的时候非常稳定。然后,在大约20000步时达到峰值。我甚至做了20万步的训练,但是效果并不理想。

我建议每5000步左右下载一次模型,对其进行评估,以确保你的方向是正确的。

点击左上角的Jupyter徽标,打开Custom-Object-Detection/train。

下载编号最大的model.ckpt文件。

  • model.ckpt-STEP_NUMBER.data-00000-of-00001
  • model.ckpt-STEP_NUMBER.index
  • model.ckpt-STEP_NUMBER.meta

注意:一次只能下载一个文件。

11.png

注意:完成后,请务必点击机器上的红色电源按钮。否则,记时不会停止,时间会继续走下去。

导出推理图

要在代码中使用模型,需要将检查点文件(model.ckpt-STEP_NUMBER.*)转换为推理图。

将刚刚下载的检查点文件复制到代码库的根目录中。

然后运行这个命令:

python object_detection/export_inference_graph.py \
        --input_type image_tensor \
        --pipeline_config_path faster_rcnn_resnet101.config \
        --trained_checkpoint_prefix model.ckpt-STEP_NUMBER \
        --output_directory output_inference_graph

记住执行:

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

这时,应该可以看到一个新的output_inference_graph目录和frozen_inference_graph.pb文件。这就是我们需要的文件。

测试模型

现在运行以下命令:

python object_detection/object_detection_runner.py

它会在test_images目录中的所有图像上运行output_inference_graph/frozen_inference_graph.pb中的对象检测模型,并将结果输出到output/test_images目录中。

结果

点击此处查看在“星球大战:原力觉醒”某个片段上运行模型后得到的结果。

Tensorflow文字定位、tesseract识别 立即下载

相关推荐

tensorflow-slim库图像分类和目标定位案例

tensorflow.contrib.slim轻量级包做图像分类定位非常友好的集成包,这是一个非常详细的实现案例。

Tensorflow---使用Tensorflow进行图像目标定位的实现

一、代码中的数据集可以点击以下链接进行下载 百度网盘提取码:lala 二、代码运行环境 Tensorflow-gpu==2.4.0 Python==3.7 三、数据集处理的代码如下所示 import os import random import tensorflow as tf import xml.etree.ElementTree as ET import glob import numpy as np import matplotlib.pyplot as plt # 环境变量的配置 os.en

qq_44961869的博客 1894

Tensorflow Lite人体姿势跟踪功能上线:实时人体姿态估计.pdf

「PoseNet」是一种视觉模型,它可以通过检测关键身体部位 的位置来估计图像或者视频中的人体姿势。例如,该模型可以估计图像中人的手肘和/ 或膝盖位置。这种姿势估计模型不会鉴别图像中的人是谁,只会找到关键身体部位的 位置。 TensorFlow Lite 分享了一个安卓示例应用程序,该应用程序利用设备的摄像头来实时地检测和显示一个人的关键部位

tensorflow2.3实现目标定位(一)

tensorflow2.3实现目标定位和分类 常见图像处理的任务 1、分类 给定一副图像,我们用计算机模型预测图片中有什么对象。 2、分类与定位 我们不仅要知道图片中的对象是什么,还要在对象的附近画一个边框,确定该对象所处的位置。 3、语义分割区分到图中每一点像素点,而不仅仅是矩形框框住。 4、目标检测 目标检测简单来说就是回答图片里面有什么?分别在哪里?(并把它们使用矩形框框住) 5、实例分割 实例分割是目标检测和语义分割的结合。相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割, 实例分割

JerryZhang1111的博客 960

手跟踪:在Tensorflow上使用神经网络(SSD)构建实时手检测器

在Tensorflow上使用神经网络(SSD)进行实时手检测。 此仓库记录了用于使用Tensorflow(Object Detection API)训练手持探测器的步骤和脚本。 与任何基于DNN的任务一样,过程中最昂贵(也是最危险)的部分与查找或创建正确的(带注释)数据集有关。 我主要对检测桌子上的手感兴趣(以自我为中心的观点)。 我首先用了实验(结果不好)。 然后,我尝试了,该非常适合我的要求。 此回购/发布的目的是演示如何将神经网络应用于跟踪手(以自我为中心的视图和其他视图)的(困难)问题。 更好的是,提供可以适应其他用例的代码。 如果您在研究或项目中使用本教程或模型,请引用 。

python+opencv实现车牌定位功能(实例代码)

写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三。 由于时间紧张,代码没有进行任何优化,实验算法仅供参考。 实验要求 对给定的车牌进行车牌识别 实验代码 代码首先贴在这里,仅供参考 源代码 实验代码如下: import cv2 import numpy as np def lpr(filename): img = cv2.imread(filename) # 预处理,包括灰度处理,高斯滤波平滑处理,Sobel提取边界,图像二值化 # 对于高斯滤波函数的参数设置,第四个参

【Keras+计算机视觉+Tensorflow】实现基于YOLO和Deep Sort的目标检测与跟踪实战(附源码和数据集)

【Keras+计算机视觉+Tensorflow】实现基于YOLO和Deep Sort的目标检测与跟踪实战(附源码和数据集)

showswoller的博客 2824

【心得】Back trader避坑指南(一)——关于安装过程的问题

我认为一开始比较容易卡住的地方,主要是安装上面的问题。我给大家整理的这个版本是我能跑通的版本,还有一些好用的神器,手把手教你怎么装!

weixin_38347757的博客 1303

多目标追踪笔记五:基于tensorflow的SSD+sort的多目标跟踪代码实现(源码)

首先感谢原作者的源码https://blog.youkuaiyun.com/xczexcel/article/details/79405272,才有了这份基于tensorflow的ssd+sort的代码 原来是基于caffe的ssd+sort的,但是在linux下装caffe装的心烦,所以就退而求其次,选择tensorflow版本的ssd,希望一起交流学习。https://github.com/balanc...

ycc2011的专栏 6730

温度实时检测预警系统(STC89C51RC+DS18B20)

温度实时检测预警系统

1 兴趣 2 实践 1499

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4506

用 TensorFlow 追踪千年隼号

价值 | 思考 | 共鸣简评:TensorFlow 是个机器学习的开源库。这篇文章中原作者 Nick Bourdakos 将用 TensorFlow 来训练识别自定义模型,并给出了详细的过程(星战迷 = =|| )。在写这篇博客时,许多大型技术公司(如 IBM,Google,Microsoft,Amazon)都有简单易用的视觉识别 API。一些小点的公司同样提供了类似的服务,比如 Clarifai

极光开发者 790

ArcMap安装与配置全攻略:从下载到实战应用

本文提供了ArcMap 10.4.1从系统准备、详细安装到破解激活的完整指南,并包含首次启动的界面介绍与一个实战GIS分析项目。针对初学者,文章强调了在ArcGIS Pro成为趋势的当下,学习经典ArcMap对于理解核心概念和兼容现有工作流仍有重要价值,帮助用户避开安装常见陷阱,快速上手实战应用。

weixin_29200741的博客 340

tensorflow项目——使用object detection api训练自己的数据集并进行物体检测(object detection)

##  tensorflow项目学习(1)——训练自己的数据集并进行物体检测(object detection) * https://blog.youkuaiyun.com/qq_37423198/article/details/79238028 config更改下类别##  深度学习入门篇--手把手教你用 TensorFlow 训练模型* https://www.cnblogs.com/qcloud1001...

uncle_ll的博客 2608

RTL8306交换机芯片与FPGA联调实战:5个网口+1个MAC的配置避坑指南

本文详细解析了RTL8306交换机芯片与FPGA联调中的关键技术难点,特别是MAC5寄存器的配置陷阱和PHY页切换机制。通过实战案例和优化策略,帮助开发者高效配置5个网口+1个MAC的工业级网络设备,提升系统稳定性和实时性。

vodka的博客 1099

【论文复现】——基于LM优化的NDT点云配准算法

传统的正态分布变换配准算法处理初始位姿变换相差较大的两帧点云时,存在无法收敛或者陷入局部最小值的问题。为了提高算法的收敛性能,提出了一种基于LM方法改进的三维正态分布变换配准算法。

点云侠的博客 1163

基于正念的焦虑缓解App设计:参考《西藏生死书》的4个核心交互模块

本文探讨了基于正念的焦虑缓解App设计,融合《西藏生死书》的智慧,提出4个核心交互模块:无常日志、呼吸锚定、慈悲冥想和生命意图设置。这些模块通过多感官交互和游戏化设计,帮助用户缓解焦虑,提升心理韧性。文章还介绍了藏式美学在用户体验中的应用,确保设计既现代又具有文化深度。

shirlly 232

YOLOv11 改进 - Mamba | 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-B 替换骨干,破解全局依赖建模难题,实现高效实时检测

本文介绍Mamba YOLO,为图片物体识别提供了“又快又准”的新方案。传统CNN架构运行快但难以捕捉远距离关联物体,Transformer架构精度高但计算量呈平方级增长,而SSM虽计算量为线性级且能抓全局关联,但用于图片识别时细节定位不准。为此,Mamba YOLO做了三项关键优化:引入ODMamba骨干网络,解决自注意力的二次复杂度问题,且无需预训练;设计ODMamba宏观结构确定最佳阶段比例和缩放大小;采用多分支结构的RG块建模通道维度,解决SSM在序列建模中的不足。在COCO数据集测试中,其小版本推

魔改工程师的博客 859

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

Yuner2000的博客 212

基于STM32设计的智能防盗单车锁_349

本设计基于STM32F103RCT6单片机,研制了一种适用于户外环境的智能防盗单车锁系统。系统集成了GPS定位模块、ADXL345加速度传感器、4G通信模块(Air780E)、OLED显示屏、继电器模拟锁控模块等硬件,通过姿态感知实现车辆异常移动检测,在锁车状态下自动触发蜂鸣器报警并通过短信与APP通知用户。

868

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【AI编码助手革命】程序员的生产力新纪元

更重磅的是WASI标准支持文件系统访问,这意味着未来Web应用将拥有原生级能力,传统桌面软件格局或被颠覆。数字孪生城市项目中,Three.js结合GIS数据实现厘米级精度还原,物理引擎模拟交通流误差控制在15%以内。不是简单自动补全,而是理解上下文逻辑的智能结对编程——从注释生成代码到重构优化,AI正在重塑软件开发范式。某大厂团队实测显示,复杂模块开发周期缩短60%,但警惕过度依赖导致的‘代码同质化’风险。某金融机构案例显示,实施微隔离后横向移动攻击成功率归零,但需注意员工体验与安全的平衡点。

叶♥璃 345

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 这五种特质让你顺利变身领导者
下一篇: Java8中流的性能
csdn研发技术
博客等级 码龄9年 1381粉丝 90原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值