类 'nnet.cnn.TrainingOptionsADAM' 的属性 'verbose' 无法识别。
出错 pnp_admm (第 24 行)
if ~isfield(options, 'verbose'), options.verbose = 1; end
出错 M3 (第 303 行)
[x, iter] = pnp_admm(y,epsilon,Phit,Phi, options,net );
类 'nnet.cnn.TrainingOptionsADAM' 的属性 'verbose' 无法识别。
出错 pnp_admm (第 24 行)
if ~isfield(options, 'verbose'), options.verbose = 1; end
出错 M3 (第 303 行)
[x, iter] = pnp_admm(y,epsilon,Phit,Phi, options,net );
参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。
这个错误信息表明,在 'nnet.cnn.TrainingOptionsADAM' 类中并没有定义一个名为 'verbose' 的属性,而在调用函数 pnp_admm
时尝试访问并初始化了这个属性。
在类 'nnet.cnn.TrainingOptionsADAM' 中,若要添加一个控制训练过程是否显示详细信息的属性(例如 verbose),你需要确保在类定义中明确声明该属性:
classdef TrainingOptionsADAM
properties
% ... 其他已存在的属性 ...
verbose % 添加 verbose 属性,默认值可以在构造函数中设置
end
methods
function obj = TrainingOptionsADAM(varargin)
% 在构造函数中初始化 verbose 属性
obj.verbose = false; % 或者根据需要设置为其他默认值
% ... 其他初始化代码 ...
end
end
end
之后在 pnp_admm
函数中,就可以安全地检查和设置这个属性:
function [x, iter] = pnp_admm(y, epsilon, Phit, Phi, options, net)
if ~isfield(options, 'verbose')
options.verbose = 1;
end
% ... 其他函数内容 ...
end
请确认你的类定义文件中是否已经正确包含了 'verbose' 这个属性。如果没有,你需要添加它;如果已经存在但依然报错,请检查是否有其他逻辑错误或者版本兼容性问题。