在matlab中为特定索引设置多个值的最快方法,用于神经网络输出分类改造

时间:2017-09-23 11:55:39

标签: matlab machine-learning deep-learning octave

有一个向量 y ,如下所示:

[
  1
  2
  4
]

我打算将其转换为以下格式,只有0和1,其中,当前行的第y个元素将设置为1:

[
  1 0 0 0
  0 1 0 0
  0 0 0 1
]

我可以在下面的非矢量化版本中实现它,但是在矢量化版本中实现它的最有效方法是什么?谢谢!

yy = zeros(size(y, 1), num_labels);
for i=1:size(y,1),
    yy(i, y(i, 1)) = 1;
end;

1 个答案:

答案 0 :(得分:0)

使用稀疏矩阵,这也会节省大量内存,并且可以像" normal"计算中的矩阵:

y = [1 2 4];
sparse (y, y, 1)

给你

Compressed Column Sparse (rows = 4, cols = 4, nnz = 3 [19%])

  (1, 1) ->  1
  (2, 2) ->  1
  (4, 4) ->  1

或者如果你真的想要一个完整的矩阵:

full (sparse (y, y, 1))
ans =

   1   0   0   0
   0   1   0   0
   0   0   0   0
   0   0   0   1