小编Tho*_*oth的帖子

将数据上传到共享内存中以用于卷积内核

我在参考评论中理解批量加载时遇到一些困难.为了计算像素中的卷积,大小为5的掩模必须以该特定像素为中心.图像被分为图块.应用卷积掩模后的这些图块是尺寸为的最终输出图块TILE_WIDTH*TILE_WIDTH.对于属于输出图块边框的像素,当此图块属于图像的边框时,图像必须从相邻图块借用一些像素.否则,这些借来的值被赋值为零.这两个步骤描述于

if (srcY >= 0 && srcY < height && srcX >= 0 && srcX < width)
    N_ds[destY][destX] = I[src];
else
    N_ds[destY][destX] = 0;
Run Code Online (Sandbox Code Playgroud)

因此,共享存储器阵列的TILE_WIDTH + Mask_width - 1每一侧都有尺寸.我不清楚代码的以下部分.

  1. destYdestX指数.将输出索引除以输入切片宽度意味着什么?
  2. srcY添加srcX索引.为什么destYdestX索引参与srcY添加srcX索引?

    srcY = blockIdx.y * TILE_WIDTH + destY - Mask_radius;

    srcX = blockIdx.x * TILE_WIDTH + destX - Mask_radius;

  3. 为什么在第二次加载时我们使用偏移TILE_WIDTH * TILE_WIDTH
  4. 一般来说,有两次加载的直观解释是什么?
  5. 所有这些问题都可以根据下面的图像进行直观的示例吗?
  6. 谢谢!

编辑:图片添加.在绿色中有输出瓦片,在红色中我们有掩模以114索引为中心.很明显,面具借用了不同瓷砖的元素.最后,该图像指的是一个通道.

示例: …

cuda gpu

9
推荐指数
1
解决办法
5918
查看次数

使用多变量多项式的特征映射

考虑一下我们有一个数据矩阵 数据点 我们有兴趣将这些数据点映射到更高维度的特征空间.我们可以通过使用d次多项式来做到这一点.因此对于一系列 数据指向新的数据矩阵

我研究了一个相关的脚本(Andrew Ng.在线课程),它将二维数据点转换为更高的特征空间.但是,我无法想出一种在任意高维样本中推广的方法,.这是代码:

d = 6;
m = size(D,1); 
new = ones(m);
for k = 1:d
    for l = 0:k
        new(:, end+1) = (x1.^(k-l)).*(x2.^l);
    end
end
Run Code Online (Sandbox Code Playgroud)

我们可以矢量化这段代码吗?还给出了数据矩阵 你能否就如何使用d维多项式将任意维度的数据点转换为更高维数的方法提出建议?

PS:d维数据点的推广将非常有用.

mapping matlab machine-learning octave linear-regression

8
推荐指数
1
解决办法
2976
查看次数

使用 PyTorch 在每次迭代中仅从一个类中高效地采样批次

我想在 ImageNet 数据集(1000 个类别)上训练分类器,并且需要每个批次包含来自同一类别的 64 个图像以及来自不同类别的连续批次。到目前为止,根据我@shai的建议和这篇文章

import torchvision.transforms as transforms
import torchvision.datasets as datasets
from torch.utils.data import DataLoader
from torch.utils.data import Dataset
import numpy as np
import random
import argparse
import torch
import os


class DS(Dataset):
    def __init__(self, data, num_classes):
        super(DS, self).__init__()
        self.data = data

        self.indices = [[] for _ in range(num_classes)]
        for i, (data, class_label) in enumerate(data):
            # create a list of lists, where every sublist containts the indices of
            # the samples that belong to …
Run Code Online (Sandbox Code Playgroud)

python pytorch pytorch-dataloader

5
推荐指数
1
解决办法
1568
查看次数

试图仅仅在c ++中模拟Matlab"独特"函数

我有以下向量,v = [ 9 2 9 5]以及它的唯一元素c = [2 5 9]按升序排列.我想提取矢量u = [3 1 3 2].所述u载体含有在载体中的独特元素的索引c,以便重构矢量v.

我的想法是迭代v,并借助于基于唯一值构造的哈希表c来获得索引值.这有意义吗?如果是的话,你能不能请一个人提出建议c++?其他建议受到高度赞赏(我对高效实现感兴趣,因为vc矩阵足够大).

最好的问候,透特

c++ matlab

4
推荐指数
1
解决办法
1127
查看次数

在visual studio中配置mex功能

这里,它解释了如何在visual studio中配置.exe文件.有没有办法使用相同的程序分析mex代码?

谢谢.

matlab mex visual-studio-2010

4
推荐指数
1
解决办法
1320
查看次数

计算矩阵内存消耗

是否有任何Matlab函数可以返回矩阵消耗的DRAM内存量?当然还有经典的方式,纠正我,如果我错了,MemSize = numel(myMatrix)*BytesPerElement在那里 BytesPerElement = 4,如果我们有双重工作,或者 BytesPerElement = 1,如果我们单工作.当然,如果没有这样的功能,可以建议他自己的方式来计算字节中的内存.兆字节或千兆字节.

谢谢.

matlab

2
推荐指数
1
解决办法
73
查看次数

获取矩阵元素的邻居

我有一个矩阵,我希望得到每个元素的周围元素的索引.所有这些结果必须以下列方式存储到矩阵中.矩阵的每一行对应于矩阵元素,并且该矩阵的每列包含邻居索引.例如,对于4x4矩阵,我们将得到一个16x8结果数组.一些矩阵元素没有8个邻居.

有一个例子,我认为它有效,我有什么方法可以避免循环?:

ElementNeighbors = [];
for n = 1:numel(Matrix)
    NeighborsMask = [ n-1 n+1 n+size(matrix,1) n-size(Matrix,1) n-size(Matrix,1)-1 n-size(Matrix,1)+1 ...
        n+size(Matrix,1)-1 n+size(Matrix,1)+1 ];

    ElementNeighbors = [ElementNeighbors ; NeighborsMask ];
end
ElementNeighbors (ElementNeighbors ==0|ElementNeighbors <0) = NaN;
Run Code Online (Sandbox Code Playgroud)

matlab

2
推荐指数
1
解决办法
5538
查看次数

使用 CUDA 和犰狳

.cu在 64x VS2010 项目中有一个文件。此项目配置为提取.mexw64文件。下面是我运行的示例。在 mex 函数中,我想使用 Armadillo 线性代数库的一些函数。所以当#include "armaMex.hpp"使用时,编译器会返回一些错误:

  1. 错误 C3203:“fixed”:未特化的类模板不能用作模板参数“T1”的模板参数,应为真实类型 c:....\armadillo-4.200.0\include\armadillo_bits\Mat_meat.hpp
  2. 错误 C2955:“arma::Mat::fixed”:使用类模板需要模板参数列表 c:\ ....\armadillo-4.200.0\include\armadillo_bits\Mat_meat.hpp
  3. 错误 C1903:无法从之前的错误中恢复;停止编译 c:\ ....\armadillo-4.200.0\include\armadillo_bits\Mat_meat.hpp

我无法弄清楚是什么导致了这些错误。你能解释一下吗?

#include "mex.h" 
#include "armaMex.hpp"
void
    mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    mexPrintf("hello!\n");
}
Run Code Online (Sandbox Code Playgroud)

PS:CUDA SDK 5.5 64x,VS2010

cuda visual-studio-2010 armadillo

2
推荐指数
1
解决办法
2011
查看次数

有效地找到每个单元阵列元素的最大值

我们有一个例子是一个3x5 cell阵列,其中每个元素都是一个矩阵.我们能找到每个单元元素的最大值,即矩阵,并将相应的值存储在新的3x5矩阵中吗?这一切都没有for循环.贝娄有天真的方式.

例:

a = rand(5,6);
b = rand(7,6);
c = rand(7,9);
d = rand(27,19);
CellArray = cell(2,2);
CellArray{1}=a;
CellArray{2}=b;
CellArray{3}=d;
CellArray{4}=c;

MaxResults = nan(size(CellArray));
for i=1:numel(size(CellArray))
    MaxResults(i) = max(max(CellArray{i})); 
end
Run Code Online (Sandbox Code Playgroud)

谢谢.

matlab

1
推荐指数
1
解决办法
3492
查看次数

映射内存和 gpu::CudaMem 用法

我想知道是否有可能避免 gpu 和设备之间的内存传输。我最近读到映射内存就是为此目的,如果我错了,请纠正我。

  1. 可以分配多少映射内存?
  2. 当我们使用映射内存时,gpu 的全局内存未使用?
  3. 相反,在上传数据的gpu::GpuMatOpenCV中可以使用我们ALLOC_ZEROCOPY
    GPU :: CudaMem节省上传时间像这样
  4. 如果是的话,你能举个例子吗?

谢谢!

opencv cuda gpu

1
推荐指数
1
解决办法
1741
查看次数