matconvnet加载模型错误:MATLAB错误使用 load 无法读取 MAT 文件

问题场景:

想使用Matlab进行神经网络的建立,下载MatConvNet工具箱后,运行官网的Quick Start程序出现标题所示load错误。

用load加载训练好的.mat模型时出现错误。


问题描述

matconvnet官网上的程序:

% setup MatConvNet
run  matlab/vl_setupnn

% download a pre-trained CNN from the web (needed once)
urlwrite(...
  'http://www.vlfeat.org/matconvnet/models/imagenet-googlenet-dag.mat', ...
  'imagenet-googlenet-dag.mat') ;

% load the pre-trained CNN
net = dagnn.DagNN.loadobj(load('imagenet-googlenet-dag.mat')) ;
net.mode = 'test' ;

% load and preprocess an image
im = imread('peppers.png') ;
im_ = single(im) ; % note: 0-255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = bsxfun(@minus, im_, net.meta.normalization.averageImage) ;

% run the CNN
net.eval({'data', im_}) ;

% obtain the CNN otuput
scores = net.vars(net.getVarIndex('prob')).value ;
scores = squeeze(gather(scores)) ;

% show the classification results
[bestScore, best] = max(scores) ;
figure(1) ; clf ; imagesc(im) ;
title(sprintf('%s (%d), score %.3f',...
net.meta.classes.description{best}, best, bestScore)) ;

---------运行结果-----------------------------------------
>>>错误使用 load
无法读取 MAT 文件 C:\Users\Focus\Desktop\NN\imagenet-googlenet-dag.mat。不是二进制 MAT 文件。请尝试执行 load -ASCII 以便以文本形式读取。

出错 scratch1 (line 10)
net = dagnn.DagNN.loadobj(load('imagenet-googlenet-dag.mat')) ;

原因分析:

urlwrite函数并没有将.mat模型下载到本地,而是将网页的HTML信息保存到了imagenet-googlenet-dag.mat文件中

查看imagenet-googlenet-dag.mat的大小可以看出文件太小了。
在这里插入图片描述
或者用在matlab交互界面用edit(‘imagenet-googlenet-dag.mat’)查看文件情况也可以看出:
在这里插入图片描述


解决方案:

到MatConvNet官网直接下载模型放入工作目录中使用

如直接在官网下载imagenet-googlenet-dag.mat模型,其属性如下图所示,大小正常。
在这里插入图片描述
再运行例程即可正常运行。

% load the pre-trained CNN
net = dagnn.DagNN.loadobj(load('imagenet-googlenet-dag.mat')) ;
net.mode = 'test' ;

% load and preprocess an image
im = imread('peppers.png') ;
im_ = single(im) ; % note: 0-255 range
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;
im_ = bsxfun(@minus, im_, net.meta.normalization.averageImage) ;

% run the CNN
net.eval({'data', im_}) ;

% obtain the CNN otuput
scores = net.vars(net.getVarIndex('prob')).value ;
scores = squeeze(gather(scores)) ;

% show the classification results
[bestScore, best] = max(scores) ;
figure(1) ; clf ; imagesc(im) ;
title(sprintf('%s (%d), score %.3f',...
net.meta.classes.description{best}, best, bestScore)) ;
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误信息表明,您正在尝试使用 MatLabload 函数读取一个名为 'coast.mat' 的文件时,但是该文件不存在或位于错误的目录中,因此无法加载。这个问题可能出现的原因有很多,以下是一些可能的解决方法: 1. 检查文件路径是否正确,确保 'coast.mat' 文件与当前工作目录相同。使用 cd 命令改变当前工作目录,或者在 load 函数中指定绝对路径来解决这个问题。 2. 检查文件名是否正确拼写,确保文件名与实际文件名完全相同,包括大小写和文件格式(.mat)。 3. 检查文件是否存在于磁盘上,如果文件被删除或移动了,就会出现无法加载错误。 4. 如果文件是从其他计算机或程序生成的,请确保文件格式与当前版本的 MatLab 兼容。如果不兼容,需要重新生成相应的文件。 在处理这个问题时,您还可以使用其他相关的函数查找并加载可用的文件。例如,使用 dir 函数查找当前工作目录中所有的文件,或者使用 uigetfile 函数手动选择要加载文件。无论如何,与错误使用 load 提示的任何问题都可以通过仔细检查文件路径、命名、格式和存在性来解决。 ### 回答2: 错误使用 load 无法读取文件 'coast.mat'。没有此类文件或目录,可能有以下几种原因造成这种情况: 1. 文件路径错误:输入的文件路径可能不正确。请检查路径是否包括正确的文件夹名称和文件名,并确保它们与实际文件的位置一致。如果文件位于当前工作目录中,则只需提供文件名即可。 2. 文件不存在:文件 'coast.mat' 可能确实不存在于指定的路径中。请检查文件是否在该路径下,并确保文件名拼写正确。如果文件确实不存在,您可以尝试使用其他文件或者找到包含正确数据的文件。 3. 文件类型不匹配:'coast.mat' 可能不是一个有效的.mat文件。请确认文件是否为MATLAB兼容的.mat文件,并且该文件可以被load函数正确解析。 4. 文件损坏:如果文件 'coast.mat' 存在但无法读取,可能是因为文件损坏。您可以尝试使用其他方式打开该文件,例如通过MATLAB文件浏览器,或者尝试使用其他工具来验证该文件的完整性。 综上所述,请检查输入的文件路径、文件名拼写、文件类型和文件的完整性,以解决 load 函数无法读取文件 'coast.mat' 的问题。 ### 回答3: 当出现错误使用 `load` 无法读取文件 'coast.mat',并且提示没有此类文件或目录时,这通常意味着代码中指定的文件路径或文件名是错误的。下面是可能导致该错误的几种情况和解决方案: 1. 文件不存在: "coast.mat" 不存在于指定的路径。你需要确定该文件是否存储在正确的位置。你可以通过检查文件路径和确保文件名的正确拼写来解决此问题。 2. 引号错误: 你在代码中没有正确使用引号或双引号来指定文件名。确保文件名的引号是配对的,且与编程语言的语法规则一致。 3. 文件路径错误: 如果 'coast.mat' 存储在另一个目录中,确保代码指定了正确的文件路径。你可以使用绝对路径(例如:"C:\data\coast.mat")或相对路径(例如:"./data/coast.mat")来指定该文件。 4. 工作目录问题: 如果 'coast.mat' 存储在当前工作目录之外,你需要更改 Matlab(或其他编程环境)的当前工作目录。这样,代码将能够找到并读取正确的文件。可以使用 `cd` 命令来更改当前工作目录:例如,`cd C:\data`。 5. 文件扩展名错误: 如果 'coast.mat' 不是有效的 MATLAB 格式文件,可能是由于错误文件扩展名。确保你正在尝试读取与代码中指定的读取函数(比如 `load`)相兼容的文件。 请根据上述提示逐一检查和解决可能引起错误的因素,以确保能够成功读取 'coast.mat' 文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值