运行神经网络错误使用 struct: 无法从 double 转换为 struct

运行神经网络时 提示错误使用 struct: 无法从 double 转换为 struct 的解决办法,亲测有效

1. 看到有人说是lssvm和神经网络冲突,自己尝试了一下,确实将lssvm工具箱在路径(set path)中删除 (remove from the path)后,程序可以正常运行了,后续要使用该工具箱需要在设置路径中重新添加

2. 官网给出了解决办法:

Why do I get a error message "Conversion to struct from double is not possible. " when I run patternnet function? - (mathworks.cn)

It seems that MATLAB path is not set correctly. Please execute the following command to initialize MATLAB path. (似乎MATLAB路径设置不正确。请执行以下命令初始化MATLAB路径

>> restoredefaultpath

If you could avoid the error, please execute the following command to save MATLAB path. (如果可以避免此错误,请执行以下命令保存MATLAB路径

>> savepath

在命令行窗口输入restoredefaultpath后再重新运行神经网络算法,发现可以正常运行。再去运行lssvm程序后发现报错,查看路径发现lssvm已被删除。说明问题确实是lssvm和神经网络工具箱有冲突,1和2方法其实都是一样的。

注意:如果只输入restoredefaultpath,这个是临时性将lssvm移除路径,下次再打开matlab运行神经网络代码仍然会报错,想要一次性解决就要再输入savepath,以后想用lssvm再手动添加回来就好了。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个示例的自定义激活函数替换卷积神经网络激活函数的 Matlab 代码: ```matlab % 自定义激活函数 function y = my_activation(x) y = max(0, x); % ReLU 激活函数 % 可以尝试其他激活函数,例如 sigmoid、tanh 等 end % 加载数据 load mnist_uint8; % 转换数据类型 train_x = double(train_x) / 255; test_x = double(test_x) / 255; % 调整数据形状 train_x = reshape(train_x, size(train_x, 1), 1, 28, 28); test_x = reshape(test_x, size(test_x, 1), 1, 28, 28); % 构建卷积神经网络模型 cnn.layers = { struct('type', 'i') % 输入层 struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) % 卷积层 struct('type', 'a', 'activation', @my_activation) % 自定义激活函数层 struct('type', 's', 'scale', 2) % 池化层 struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) % 卷积层 struct('type', 'a', 'activation', @my_activation) % 自定义激活函数层 struct('type', 's', 'scale', 2) % 池化层 struct('type', 'c', 'outputmaps', 20, 'kernelsize', 5) % 卷积层 struct('type', 'a', 'activation', @my_activation) % 自定义激活函数层 struct('type', 's', 'scale', 2) % 池化层 }; cnn = cnnsetup(cnn, train_x, train_y); % 训练卷积神经网络模型 opts.alpha = 1; opts.batchsize = 50; opts.numepochs = 20; cnn = cnntrain(cnn, train_x, train_y, opts); % 测试卷积神经网络模型 [er, bad] = cnntest(cnn, test_x, test_y); fprintf('Error rate: %f\n', er); ``` 在这个示例代码中,我们定义了一个名为 `my_activation` 的自定义激活函数,并将其用作卷积神经网络模型中的激活函数。同时,我们还在卷积神经网络模型的定义中添加了一个新的层,即 `struct('type', 'a', 'activation', @my_activation)`,其中 `@my_activation` 表示使用我们定义的自定义激活函数。然后,我们使用 `cnntrain` 函数训练卷积神经网络模型,并使用 `cnntest` 函数测试模型的性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值