小编use*_*593的帖子

cuda块同步

我有b个块,每个块有t个线程.我可以用

 __syncthreads()
Run Code Online (Sandbox Code Playgroud)

同步特定块中的线程.例如

__global__ void aFunction()
{
    for(i=0;i<10;i++)
    {
       //execute something
        __syncthreads();
    }
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是同步所有块中的所有线程.我怎样才能做到这一点?

cuda

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

svm缩放输入值

我正在使用libSVM.假设我的功能值采用以下格式:

                         instance1 : f11, f12, f13, f14
                         instance2 : f21, f22, f23, f24
                         instance3 : f31, f32, f33, f34
                         instance4 : f41, f42, f43, f44
                         ..............................
                         instanceN : fN1, fN2, fN3, fN4
Run Code Online (Sandbox Code Playgroud)

我认为可以应用两种缩放.

  1. 缩放每个实例向量,使得每个向量具有零均值和单位方差.

        ( (f11, f12, f13, f14) - mean((f11, f12, f13, f14) ). /std((f11, f12, f13, f14) )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将上述矩阵的每个列缩放到一个范围.例如[-1,1]

根据我对RBF内核(libSVM)的实验,我发现第二个缩放(2)将结果提高了大约10%.我不明白为什么(2)给我一个改进的结果.

任何人都可以解释一下应用缩放的原因是什么,为什么第二个选项会给我带来改进的结果?

machine-learning svm computer-vision libsvm

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

特征归一化 - l2归一化的优势

特征通常在分类之前归一化.

L1和L2归一化通常用于文献中.

有没有人可以评论L2范数(或L1范数)与L1范数(或L2范数)相比的优势?

machine-learning computer-vision

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

CUDA exp()expf()和__expf()

如何在cuda中优化exp函数?CUDA中有以下几点有什么区别?

   exp()
   expf()
   __expf()
Run Code Online (Sandbox Code Playgroud)

cuda

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

cudaMemcpy - 将int从主机复制到设备错误

有什么区别

 cudaMemcpy and cudaMemset??
Run Code Online (Sandbox Code Playgroud)

如何将int值从主机复制到设备?这是我正在使用的代码

int addXdir = 1;
int devAddXdir;
cudaMalloc((void**)&devAddXdir, sizeof(int));
cudaMemcpy(devAddXdir, addXdir, sizeof(int), cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)

它给出以下错误错误:类型"int"的参数与类型"void*"的参数不兼容错误:类型"int"的参数与类型"const void*"的参数不兼容

cuda

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

Matlab拆分字符串多个分隔符

我有一个像这样的字符串单元格列表:

cellArr = 
      'folderName_fileName_no.jpg',
      'folderName2_fileName2_no2.jpg'
Run Code Online (Sandbox Code Playgroud)

我想这样做

{folderName, fileName, no},
{folderName2, fileName2, no2}
Run Code Online (Sandbox Code Playgroud)

怎么在matlab中做到?我知道我可以使用

regexp(cellArr, '_', 'split'), 
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能使用多个分隔符呢?

regex string matlab split tokenize

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

堆栈溢出C++

这是我的代码.当我在initImg函数中访问dtr数组时,它会产生堆栈溢出异常.可能是什么原因?

#define W 1000
#define H 1000
#define MAX 100000 
void initImg(int img[], float dtr[])
{
    for(int i=0;i<W;i++)
        for(int j=0;j<H;j++)
            img[i*W+j]=255;

    for(int j=0;j<H;j++)
    {
        img[j] = 0;
        img[W*(W-1)+j] = 0;
    }
    for(int i=0;i<W;i++)
    {
        img[i*W] = 0;
        img[i*W+H-1] = 0;
    }
    for(int i=0;i<W;i++)
        for(int j=0;j<H;j++)
        { 
            if(img[i*W+j]==0)
                dtr[i*W+j] = 0;    // <------here
            else
                dtr[i*W+j] = MAX;  // <------here
        }
}
int main()
{
    int image[W*H];
    float dtr[W*H];
    initImg(image,dtr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ stack-overflow callstack exception

7
推荐指数
2
解决办法
3万
查看次数

CUDA中的全局变量

如何在CUDA中创建全局变量?你能举个例子吗?

例如,如何在CUDA函数内创建数组

__global__ void test()
{
  int *a = new int[10];
}
Run Code Online (Sandbox Code Playgroud)

或者如何创建全局数组并从此函数访问它.例如

__device__ int *a;
__global__ void test()
{
  a[0] = 2;
}
Run Code Online (Sandbox Code Playgroud)

或者我如何使用如下...

__global__ void ProcessData(int img)
{
   int *neighborhood = new int[8]; 
   getNeighbourhood(img, neighbourhood);
}
Run Code Online (Sandbox Code Playgroud)

我还有一些问题.我发现比较

__device__
Run Code Online (Sandbox Code Playgroud)

如果我定义

"__device__ __constant__" (read only)
Run Code Online (Sandbox Code Playgroud)

将改善内存访问.但我的问题是我在主机内存中有一个数组说

 float *arr = new float[sizeOfTheArray]; 
Run Code Online (Sandbox Code Playgroud)

我想把它作为设备中的变量数组,我需要在设备内存中修改它,我需要将其复制回主机.我该怎么做??

cuda

7
推荐指数
1
解决办法
3万
查看次数

定向梯度直方图与边缘方向直方图

我不清楚HOG和EOH之间的区别.Hog基于图像衍生物EOH基于边缘方向.似乎HOG也以某种方式表达了EOH.

能否请您解释一下EOH与HOG的区别以及EOH与HOG相比的优势.在什么情况下我们可以使用EOH与HOG进行比较?

pattern-recognition machine-learning image-processing computer-vision

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

MATLAB图像转换

以下代码描述了图像的仿射变换,I,

T = [sx, 0, 0;...
      0, sy, 0;...
      0, 0, 1];
tform = maketform('affine', T);
[J,cdata,rdata] = imtransform(I,tform);
Run Code Online (Sandbox Code Playgroud)

在获得变换后的图像J之后,我想在图像J上找到I(5,5)的适当像素值.

我该怎么办?

在此输入图像描述

在此输入图像描述

我的代码是

function test()
    sx = 0.5; sy = 1;
    theta = pi/4;
    Ts = [sx, 0, 0;...
    0, sy, 0;...
    0, 0, 1];
    Tr = [cos(theta) -sin(theta) 0;...
          sin(theta) cos(theta), 0; ...
          0, 0, 1];
    T = Ts*Tr;

    I = imread('image_0002.jpg');
    tform = maketform('affine', T);
    [J,xdata,ydata] = imtransform(I,tform);
    h = ydata(2) - ydata(1);
    w = xdata(2) - xdata(1);

    %% …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing computer-vision

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