在深度学习网络的例子中,有label = classify(net,picture);
(即让label=
【加载的变量net,来区分picture的类别】)
我想尝试在这里进行自己的改变。
目前我已经实现,分别对训练得到的不同mat文件,分别修改对应的net变量的名称。
但是在下一步label = classify(net,picture);
我想尝试,用已经修改的名称来对应classify()中的net。
例如存一个公共属性app.var1,这个公共属性给赋值为:字符形式的,(重命名net变量后的)变量名字。
结果出现如下报错。
下面是我改名变量后的操作。
save(filename,variable);
app.var1 = variable;
这里是一个被我重命名为Y1的变量,证明我确实把变量的名字给修改了,问题应该不是出在这里。
最后,怎么才能用一个量,赋给他我重命名后的Y1变量,然后让classify(Y1,picture)呢
您可以尝试使用MATLAB中的eval函数将字符串形式的变量名转换为变量,并将其作为参数传递给classify函数。
例如,如果您将重命名后的变量名保存在app.var1中,您可以尝试以下代码:
net = eval(app.var1);
label = classify(net, picture);
这将使用eval函数将app.var1中保存的字符串形式的变量名转换为变量,并将其传递给classify函数。请注意,使用eval函数需要谨慎,因为它可以执行任意代码,并且可能存在安全风险。
在MATLAB中,classify函数的第一个输入参数应该是训练好的分类器(如神经网络),而不是字符串形式的变量名。因此,你不能通过简单地更改变量名称来替换输入参数net。相反,你需要将你的分类器加载到MATLAB的工作空间中,然后将其作为输入参数传递给classify函数。你可以使用MATLAB的load函数加载你保存的.mat文件,然后将其保存在工作空间中的变量中。然后,你可以使用这些变量作为classify函数的输入参数。例如,你可以使用以下代码加载一个名为myNet的.mat文件,然后使用它来分类一张名为myImage.jpg的图像:
load('myNet.mat'); % 加载.mat文件
myImage = imread('myImage.jpg'); % 加载图像
label = classify(myNet, myImage); % 对图像进行分类
请注意,你需要根据您的具体情况修改上面的代码。
您好,你的错误是由于您定义的变量存储在app.var中是字符串类型的,你如果要将该变量传入classify函数中的话,那么你需要将字符串的变量名转为实际的变量:
1.变量名转换到字符串
varname = string(var)
2.字符串转换到变量名
var = eval(varname)