Matlab: 生成对抗网络,使用Datastore结构输入mat格式数据

使用matlab的生成对抗网络(Generative Adversarial Network,GAN)以及条件CGAN时,案例中 的生成器的输入为图像,改为.mat格式输入遇到的问题。解决方法

官方资源

训练条件生成对抗网络 (CGAN)- MATLAB & Simulink- MathWorks 中国此示例说明如何训练条件生成对抗网络来生成图像。icon-default.png?t=O83Ahttps://ww2.mathworks.cn/help/deeplearning/ug/train-conditional-generative-adversarial-network.html

训练生成对抗网络 (GAN)- MATLAB & Simulink- MathWorks 中国此示例说明如何训练生成对抗网络来生成图像。icon-default.png?t=O83Ahttps://ww2.mathworks.cn/help/deeplearning/ug/train-generative-adversarial-network.html

原代码段

imds = imageDatastore(datasetFolder,IncludeSubfolders=true,LabelSource="foldernames");augmenter = imageDataAugmenter(RandXReflection=true);
augimds = augmentedImageDatastore([64 64],imds,DataAugmentation=augmenter);augimds.MiniBatchSize = miniBatchSize;mbq = minibatchqueue(augimds, ...MiniBatchSize=miniBatchSize, ...PartialMiniBatch="discard", ...MiniBatchFcn=@preprocessData, ...MiniBatchFormat=["SSCB" "BC"], ...OutputEnvironment="auto");

为了支持批量.mat文件以Datastore方式输入到神经网络,修改如下

 imds = imageDatastore(imageFolder,'FileExtensions', {'.mat'}, 'ReadFcn', @loadMAT,IncludeSubfolders=true,LabelSource="foldernames");......mbq = minibatchqueue(augimds, ...MiniBatchSize=miniBatchSize, ...PartialMiniBatch="discard", ...MiniBatchFcn=@preprocessData, ...     MiniBatchFormat=["SSCB" "BC"], ...OutputEnvironment="auto");

其中“ReadFcn”属性值为句柄“@loadMAT”,定义如下

function data = loadMAT(filename)
data = load(filename);
end

 运行报错提示:

错误使用 imageDataAugmenter/augment
输入图像必须为数值,并且通道数少于 4。

出错 augmentedImageDatastore/augmentData (第 411 行)
                miniBatchData = self.ImageAugmenter.augment(miniBatchData);

出错 augmentedImageDatastore/applyAugmentationPipeline (第 405 行)
            temp = self.augmentData(temp);

出错 augmentedImageDatastore>@(c)self.applyAugmentationPipeline(c) (第 382 行)
                Xout = cellfun(@(c) self.applyAugmentationPipeline(c),X,'UniformOutput',false);

出错 augmentedImageDatastore/applyAugmentationPipelineToBatch (第 382 行)
                Xout = cellfun(@(c) self.applyAugmentationPipeline(c),X,'UniformOutput',false);

出错 augmentedImageDatastore/read (第 316 行)
            input = self.applyAugmentationPipelineToBatch(input);

出错 matlab.io.Datastore/preview (第 288 行)
            data = read(copyds);

出错 getPreviewFromDatastore (第 9 行)
    previewData = preview(inputDatastore);

出错 minibatchqueue (第 290 行)
            numVariables = numel(getPreviewFromDatastore(originalDatastore));

出错 ComparisonMethod (第 311 行)
    mbq = minibatchqueue(augimds, ...

错误分析

定位到底层错误处 ,发现传入miniBatchData是一个struct,而正确的格式应该是一个数组

错误示例:

正确示例:

 修改方式

句柄函数得到的是struct,从struct中提取数组

修改 loadMAT函数如下

function dataUse = loadMAT(filename)
data = load(filename);
fieldNames = fieldnames(data);
dataUse=data.(fieldNames{1});
end

 验证

 再次运行,问题解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470543.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux kernel 堆溢出利用方法(二)

前言 本文我们通过我们的老朋友heap_bof来讲解Linux kernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kernel off-by-null docker escape来深入了解这种漏洞的利用手法。(没了解过docker逃逸的朋友也可以看懂,毕竟有了root权限后&a…

设计模式:工厂方法模式和策略模式

工厂方法模式 什么是开闭原则? 开闭原则是扩展开发,对修改关闭 简单工厂(不是设计模式而是一种编程的习惯) 有三个角色 抽象产品:定义了产品的规范,描述了产品的特性和功能.具体产品:实现或者继承抽象产品的子类具体工厂:提供了创建产品的方法,调用者通过该方法获取产品 实…

深度学习代码笔记

一、U-NET 论文题目:U-Net: Convolutional Networks for Biomedical Image SegmentationUNet 的体系结构基于编码器-解码器范式,其中编码器从输入图像中提取特征,解码器基于这些特征生成分割图。但是,UNet还集成了编码器和解码器…

软件测试面试2024最新热点问题

大厂面试热点问题 1、测试人员需要何时参加需求分析? 如果条件循序 原则上来说 是越早介入需求分析越好 因为测试人员对需求理解越深刻 对测试工作的开展越有利 可以尽早的确定测试思路 减少与开发人员的交互 减少对需求理解上的偏差 2、软件测试与调试的关系 测…

L10.【LeetCode笔记】回文链表

目录 1.题目 2.自解 代码 提交结果 1.题目 给你一个单链表的头节点 head ,请你判断该链表是否为 回文链表 。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:tru…

Lucene 和 Elasticsearch 中更好的二进制量化 (BBQ)

作者:来自 Elastic Benjamin Trent Lucene 和 Elasticsearch 中更好的二进制量化 (BBQ)。 嵌入模型输出 float32 向量,通常对于高效处理和实际应用来说太大。Elasticsearch 支持 int8 标量量化,以减小向量大小,同时保持性能。其他…

猿创征文|Inscode桌面IDE:打造高效开发新体验

猿创征文|Inscode桌面IDE:打造高效开发新体验 引言 在当今快速发展的软件开发领域,一个高效、易用的集成开发环境(IDE)是每个开发者必不可少的工具。Inscode 桌面 IDE 作为一款新兴的开发工具,凭借其强大…

【VBA实战】用Excel制作排序算法动画续

为什么会产生用excel来制作排序算法动画的念头,参见【VBA实战】用Excel制作排序算法动画一文。这篇文章贴出我所制作的所有排序算法动画效果和源码,供大家参考。 冒泡排序: 插入排序: 选择排序: 快速排序:…

IPguard与Ping32全面对比——选择最适合企业的数据安全解决方案

在如今数据安全威胁日益加剧的时代,企业必须高度重视保护敏感数据与信息。因此,选择一款合适的数据安全软件,尤其是防泄密和信息保护软件,显得尤为重要。在市场上,有两款备受企业青睐的数据安全解决方案——IPguard和P…

《情商》提升:增强自我意识,学会与情绪共处

在当今社会,情商(Emotional Intelligence,EQ)的重要性越来越受到人们的关注。情商是指个体运用情绪、情感、认知和行为反应的能力,来理解、管理、表达和处理情感的一种综合素养。情商的高低对于个人的成长、人际关系、…

k8s集群安装(kubeadm)

k8s集群安装(kubeadm) 1、环境准备(master和node节点都执行)1.1、替换yum源1.2、关闭selinux1.3、永久关闭防火墙1.4、永久关闭swap1.5、修改主机名添加host1.6、时间同步1.7、将桥接的IPv4流量传递到iptables的链1.8、docker安装…

使用Matlab建立随机森林

综述 除了神经网络模型以外,树模型及基于树的集成学习模型是较为常用的效果较好的预测模型。我们以下构建一个随机森林模型。 随机森林是一种集成学习方法,通过构建多个决策树并结合其预测结果来提高模型的准确性和稳定性。在MATLAB中,可以…

Wireshark

目录 解题思路 题目设计原理 总结 解题思路 首先下载文件,用 wireshark 打开一头雾水。 但是看看题目的提示,说管理员的密码就是 flag 的内容,我们可以知道,关键词估计是密码,passwd、password、pwd之类的。 所以我…

FreeRTOS学习13——任务相关API函数

任务相关API函数 任务相关API函数任务相关API函数介绍任务相关 API 函数详解函数 uxTaskPriorityGet()函数 vTaskPrioritySet()函数 uxTaskGetSystemState()函数 vTaskGetInfo()函数 xTaskGetApplicationTaskTag()函数 xTaskGetCurrentHandle()函数 xTaskGetHandle()函数 xTask…

使用kalibr_calibration标定相机(realsense)和imu(h7min)

vslam-evaluation/VINS/Installation documentation/4.IMU和相机联合标定kalibr_calibration.md at master DroidAITech/vslam-evaluation GitHub 目录 1.kalibr安装 1.1安装依赖项 1.2创建工作空间 1.3下载kalibr并编译 1.4设置环境变量 2.准备标定板 3.配置驱动和打…

[Docker#8] 容器配置 | Mysql | Redis | C++ | 资源控制 | 命令对比

目录 一:Mysql 容器化安装 二:Redis 容器化安装 Redis 简介 Redis 容器创建 三:C容器制作 四:容器资源更新 常见问题 一:Mysql 容器化安装 进入 mysql 的镜像网站,查找 mysql 的镜像 mysql docker…

1小时构建Vue3知识体系之vue的生命周期函数

本文转载自:https://fangcaicoding.cn/course/12/63 大家好!我是方才,目前是8人后端研发团队的负责人,拥有6年后端经验&3年团队管理经验。 系统学习践行者!近期在系统化输出前端入门相关技术文章,期望能…

数据结构-集合

一.集合的表示 一个重要的操作是查某个元素属于哪个集合,另一个操作是合并操作 从这个树的节点去找树根也就是从下往上找,要把树并起来只需把两个根并在一起就可以了 不存在已知一个节点去找孩子节点,根重要的是已知一个节点找它的父亲节点,与之前的二…

unity基础,点乘叉乘。

简单记录下点乘叉乘&#xff0c;要不每次用完就忘&#xff0c;忘了又查。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class TestCrossDot : MonoBehaviour {/// <summary>/// 原点/// </summary>public Transform t…

springboot 之 整合springdoc2.6 (swagger 3)

版本 springboot 3.3.5 jdk 17 springdoc 2.6.0 依赖pom <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.6.0</version> </dependency>注解对比…