内存使用单元阵列方法

时间:2015-09-07 22:07:16

标签: matlab machine-learning octave cell-array

我在某段特定代码中遇到了一些问题(请参阅下面的代码)。碰巧我需要获得变量Thetas。但是,在代码执行之前,我不知道Thetas会有多长或者矩阵的维数,因为它全部取决于变量" hidden_​​layers"。

我决定构建一个空白单元格数组,并在创建它们时附加它们以供以后使用。但我想知道最便宜的计算方法是什么。我在整个代码中多次使用相同的方法,并且我在内存使用方面遇到了一些问题。

% Prompt the user for how many layers will the neural network have
hidden_layers = input('How many layers on the NN?: ');

% Group of variables required to get Thetas
X = csvread('myData.csv');
n = size(X, 2);
hidden_layer_size = 60;
num_labels = 39;

% The length of Thetas{} will be => hidden_layers + 1
Thetas = {};

% Function randomize(element1, element2) returns a random matrix with
% dimensions: element2 x (element1 + 1)

% There will always be Thetas{1}
Thetas{1} = randomize(n,hidden_layer_size);

% Now build the rest of the Thetas based on the number of hidden_layers
for i = 1:(hidden_layers)
      if (i == hidden_layers)
            Thetas{i} = randomize(hidden_layer_size, num_labels);
      else
            Thetas{i} = randomize(hidden_layer_size, hidden_layer_size);
      end
end
PD:我还试图忘记单元格数组并构建一个附加了所有Thetas的jx1向量,稍后我将重新整形以进行进一步的计算。但是,根据分析器而言,它似乎并没有节省任何处理时间,而且它总是需要重新整理它。

0 个答案:

没有答案