问题标签 [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.

0 投票
1 回答
804 浏览

python - 无法在 Keras 中复制 matconvnet CNN 架构

我在 matconvnet 中有以下卷积神经网络架构,我用它来训练我自己的数据:

我想做的是在 Keras 中构建相同的架构,这就是我到目前为止所尝试的:

但是,当我运行 matconvnet 网络时,我有 87% 的准确率,如果我运行 keras 版本,我有 77% 的准确率。如果它们应该是同一个网络并且数据相同,那么区别在哪里?我的 Keras 架构出了什么问题?

0 投票
1 回答
1896 浏览

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:新元

      /li>
    • Keras:新元

      /li>
  • 初始化:过滤器:N(0,0.1),偏差:0
  • 归一化:除了归一化外,没有批量归一化,而输入的图像具有 0 均值和 1 标准差。

以上是我审查的方面,以确保我进行了正确的复制。但是我不明白为什么它在 Keras 上不起作用。以下是一些猜测:

  • Matconvnet 使用卷积层而不是全连接层,这可能意味着一些奇特的方法来更新参数。
  • 他们使用不同的算法来应用参数具有不同含义的 SGD。

我还做了其他尝试:

  • 将 Keras 中的优化器更改为Adadelta(). 没提升。
  • 改变网络结构并使其更深。有用!

    但是还是想知道为什么 Matconvnet 可以用一个更简单的方法来达到那么好的结果。

0 投票
0 回答
189 浏览

conv-neural-network - Matconvnet 上 MSE 的自定义损失函数

创建自定义损失函数时出现问题。抱歉,我对 matconvnet 有点陌生

所以本质上,我的神经网络的输出旨在成为一个具有 2 个元素(例如:[1,2])的向量,其误差函数基于 RMSE

因此,我更改了 cnn_train,以便标签改为 2 x # 的训练示例。在下面的代码中 x = 1 x 1 x 2 x batchSize 集合,c 是标签。

当我将其作为网络的一部分包含在内时,网络初始化良好,但在训练过程中出现错误,即使梯度输出的尺寸应该与其他尺寸匹配。

关于解决问题的任何建议?

0 投票
1 回答
759 浏览

matconvnet - 使用 vl_nnconv 时出错输入不是数字数组(或未编译 GPU 支持)

尽管我没有使用 GPU 支持编译 Matconvnet,但我收到了这个错误。有没有人知道这个错误?可能是 Matconvnet 版本的问题吗?

0 投票
0 回答
16 浏览

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 意思?

0 投票
0 回答
275 浏览

deep-learning - 在 MatConvNet 中实现自定义损失函数

我想在 MatConvNet 中实现一个自定义损失函数(来自本文:https : //arxiv.org/abs/1706.00909)。

我的代码使用 DagNN 包装器。我想修改类SegmentationLoss()以使用自定义损失函数,custom_loss()而不是vl_nnloss(). 对于forward()通过,custom_loss()返回计算的损失值。

我不明白的是在传递过程中custom_loss()应该做什么。什么是额外的输入,它来自哪里,返回值应该是什么?backward()SegmentationLoss()derOutputscustom_loss()

谢谢!

0 投票
1 回答
81 浏览

matlab - 深度网络 marix 的 Matconvnet 输出是统一值而不是变化值?

我试图从尺寸为 20x20x1x50 的网络输出中获得密度图。这里 20x20 是输出图,50 是批量大小。

问题是输出 X 的值在每个输出矩阵中等于 0.098..20x20。没有像密度图这样的高斯形状,而是一个平坦的类似值的输出图 20x20x1x50。问题如附图所示。我在这里想念什么?反向传播的欧几里得损失为:

在此处输入图像描述

0 投票
1 回答
84 浏览

matlab - 如何加强深度学习网络中的前向传播信号?

我之前在 Matconvnet 上问过一个问题 ,深度网络的 marix 输出是统一值而不是变化值? 当我调试深度网络以进行密度估计时,我意识到朝向输出的信号消失/消失。我怎样才能加强信号,使其不会变得平坦,并且峰值和基值保持高幅度?在此处输入图像描述

0 投票
2 回答
917 浏览

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其中,为什么我会收到该错误消息?

0 投票
2 回答
1192 浏览

matlab - matlabr2016b 上的 vl_compilenn ('enableGpu', true),visualstudio2015 MatConvNet 编译 GPU

我有以下配置:

  1. 视窗 10 64 位
  2. Matlab r2016b,NVidia GeForce 920MX,计算能力 5.0,工具包版本 7.5
  3. 面向社区的 Visual Studio 2015
  4. MatConvNet 测试版 23
  5. Cuda 8.0 (ga1 02/2017)
  6. 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),但问题是相似的。

非常感谢。