问题标签 [matconvnet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 无法在 Keras 中复制 matconvnet CNN 架构
我在 matconvnet 中有以下卷积神经网络架构,我用它来训练我自己的数据:
我想做的是在 Keras 中构建相同的架构,这就是我到目前为止所尝试的:
但是,当我运行 matconvnet 网络时,我有 87% 的准确率,如果我运行 keras 版本,我有 77% 的准确率。如果它们应该是同一个网络并且数据相同,那么区别在哪里?我的 Keras 架构出了什么问题?
python - 将 CNN 模型从 Matlab (Matconvnet) 导入 Python (Keras)
我正在使用 Matconvnet 上的 Matconvnet 对 CNN 进行二进制分类。而现在,我正试图通过 Python 上的 Keras 来实现它。网络一点也不复杂,我在 Matconvnet 上达到了 96% 的准确率。然而,对于 Keras,即使我尽力确保每个设置都与以前完全相同,我也无法得到相同的结果。或者更糟糕的是,该模型根本不起作用。
以下是有关设置的一些详细信息。任何想法或帮助表示赞赏!
输入
图像为 20*20 尺寸。训练规模为 400,测试规模为 100,验证规模为 132。
- Matconvnet:以 20*20*sample_size 方法存储的图像
- Keras:存储在 sample_size*20*20*1 方法中的图像
CNN结构 (3*3)*3 conv-(2*2)maxpooling-全连接-softmax-logloss
Matconvnet:使用卷积层而不是全连接层。这是代码:
/li>喀拉斯:
- 损失函数
- Matconvnet:
softmaxloss
- 喀拉斯:
binary_crossentropy
- Matconvnet:
优化器
Matconvnet:新元
/li>Keras:新元
/li>
- 初始化:过滤器:N(0,0.1),偏差:0
- 归一化:除了归一化外,没有批量归一化,而输入的图像具有 0 均值和 1 标准差。
以上是我审查的方面,以确保我进行了正确的复制。但是我不明白为什么它在 Keras 上不起作用。以下是一些猜测:
- Matconvnet 使用卷积层而不是全连接层,这可能意味着一些奇特的方法来更新参数。
- 他们使用不同的算法来应用参数具有不同含义的 SGD。
我还做了其他尝试:
- 将 Keras 中的优化器更改为
Adadelta()
. 没提升。 改变网络结构并使其更深。有用!
但是还是想知道为什么 Matconvnet 可以用一个更简单的方法来达到那么好的结果。
conv-neural-network - Matconvnet 上 MSE 的自定义损失函数
创建自定义损失函数时出现问题。抱歉,我对 matconvnet 有点陌生
所以本质上,我的神经网络的输出旨在成为一个具有 2 个元素(例如:[1,2])的向量,其误差函数基于 RMSE
因此,我更改了 cnn_train,以便标签改为 2 x # 的训练示例。在下面的代码中 x = 1 x 1 x 2 x batchSize 集合,c 是标签。
当我将其作为网络的一部分包含在内时,网络初始化良好,但在训练过程中出现错误,即使梯度输出的尺寸应该与其他尺寸匹配。
关于解决问题的任何建议?
matconvnet - 使用 vl_nnconv 时出错输入不是数字数组(或未编译 GPU 支持)
尽管我没有使用 GPU 支持编译 Matconvnet,但我收到了这个错误。有没有人知道这个错误?可能是 Matconvnet 版本的问题吗?
matlab - matcovnet pooling_cup.cpp pooling_backward_cpu 函数参数
您好我正在尝试在 matcovnet 中编写一个新的池化层。我尝试使用 Matlab 代码,但速度太慢了,所以现在我尝试使用 cpp 代码来实现。我正在尝试使用 pooling_cup.cpp 代码来实现我的工作。但我对 pooling_backward_cpu 函数的参数感到困惑 -
pooling_backward_cpu(type* derData,
type const* data,
type const* derPooled,
size_t width, size_t height, size_t depth,
size_t windowWidth, size_t windowHeight,type const* a,
size_t strideX, size_t strideY,
size_t padLeft, size_t padRight, size_t padTop, size_t
padBottom)
现在 - 是什么type* derData,
type const* data,
type const* derPooled
意思?
deep-learning - 在 MatConvNet 中实现自定义损失函数
我想在 MatConvNet 中实现一个自定义损失函数(来自本文:https : //arxiv.org/abs/1706.00909)。
我的代码使用 DagNN 包装器。我想修改类SegmentationLoss()
以使用自定义损失函数,custom_loss()
而不是vl_nnloss()
. 对于forward()
通过,custom_loss()
返回计算的损失值。
我不明白的是在传递过程中custom_loss()
应该做什么。什么是额外的输入,它来自哪里,返回值应该是什么?backward()
SegmentationLoss()
derOutputs
custom_loss()
谢谢!
matlab - 如何加强深度学习网络中的前向传播信号?
我之前在 Matconvnet 上问过一个问题 ,深度网络的 marix 输出是统一值而不是变化值? 当我调试深度网络以进行密度估计时,我意识到朝向输出的信号消失/消失。我怎样才能加强信号,使其不会变得平坦,并且峰值和基值保持高幅度?
matlab - 使用 mex -setup 时出错:“未找到支持的编译器或 SDK”
我将 MatConvNet 与 Microsoft Visual C/C++ 2015 编译器一起使用。它已安装并且可以正常工作。但是,当我运行时,mex -setup
我收到错误消息No supported compiler or SDK was found.
MatConvNet 仍然有效,并且编译器文件显然在C:\Program Files\MATLAB\R2017b\bin\win64\mexopts
其中,为什么我会收到该错误消息?
matlab - matlabr2016b 上的 vl_compilenn ('enableGpu', true),visualstudio2015 MatConvNet 编译 GPU
我有以下配置:
- 视窗 10 64 位
- Matlab r2016b,NVidia GeForce 920MX,计算能力 5.0,工具包版本 7.5
- 面向社区的 Visual Studio 2015
- MatConvNet 测试版 23
- Cuda 8.0 (ga1 02/2017)
- cuDNN 6.0 (04/2017)
当我编译时vl_compilenn (only cpu)
编译是正确的。
但是当我编译时:
vl_compilenn ('enableGpu', true)
或更具体的是:
vl_compilenn('enableGpu', true, 'cudaMethod', 'nvcc', 'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0', 'enableCudnn', true, 'cudnnRoot', 'C:\..\..\..\..\..\MatConvNet\cuda')
我有以下问题:
vl_compilenn:CUDA:MEX 配置文件:'C:\Program Files\MATLAB\R2016b\toolbox\distcomp\gpu\extern\src\mex\win64\mex_CUDA_win64.xml' C:/Program Files (x86)/Microsoft Visual Studio 14.0 /VC/../VC/bin/../../VC/INCLUDE\crtdefs.h(10): 致命错误 C1083: Non Þ possibile aprire il file containse: 'corecrt.h': 没有这样的文件或目录data.cu 使用 vl_compilenn>nvcc_compile 时出错(第 540 行)命令“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc”-c “C:.........\ MatConvNet\matconvnet-1.0-beta23\matlab\src\bits\data.cu" -DNDEBUG -DENABLE_GPU -DENABLE_CUDNN -I"C:.......\MatConvNet\cuda\include" -DENABLE_DOUBLE -D__SSSE3__ -gencode=arch=compute_50,code=\"sm_50,compute_50\" -I"C:\Program Files\MATLAB\R2016b\extern\include" -I"C:\Program Files\MATLAB\R2016b\toolbox\distcomp\gpu\extern\include"
-gencode=arch=compute_50,code=\"sm_50,compute_50\" -O3 -Xcompiler /MD --compiler-bindir "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC..\VC\bin" -o "C:........\MatConvNet\matconvnet-1.0-beta23\matlab\mex.build\bits\data.obj" 失败。vl_compilenn 错误(第 485 行) nvcc_compile(opts, srcs{i}, objfile, flags.nvcc) ;
另外,我已将 cudnn64_6.dll 复制到特定目录 matlab/mex
如果您有想法,我将不胜感激,因为我已经多次尝试使用另一个版本的 matconvnet(例如 b24),但问题是相似的。
非常感谢。