Вы, вероятно, намеревался сделать
b = a.^2;
вместо
b = a^2;
Без .
, умножение является «умножение матриц» (на самом деле, название mpower
предполагает, что буквально экспоненцирование матрицы); с .
, это «умножение по элементам». Я полагаю, что матричное умножение не работает (вообще?) Для распределенных матриц - с другой стороны, согласно this link, это фактически происходит неявно без необходимости в распределении.
Это оставляет вопрос: вы намеревались для умножения матрицы или умножения по элементам?
EDIT
Вы указали в комментариях, что причина вашего вопроса в том, что вы оценивали функцию:
function g = sigmoid2(z)
g = distributed.zeros(size(z));
%g = arrayfun(@(x) (1/(1+(exp^-(x)))),z);
for idx = 1: numel(z)
g(idx) = 1/(1+ (exp(1).^-z(idx)));
end
end
и было интересно, если есть более быстрый способ сделать это. Действительно есть. Вместо цикла по IDX, использовать одинарную матричную операцию
g = 1./(1+exp(-z));
в определении функции - это будет во много раз быстрее. Matlab является мощным, но есть много накладных расходов, выполняющих каждую строку - так избегайте циклов, если сможете. Узнайте о векторизации в Matlab (посмотрите его). Распространение не всегда ускоряет работу - это зависит от операции и размера матриц. Используйте инструмент профилирования, чтобы узнать, какая линия занимает больше всего времени - затем используйте эти знания, чтобы сосредоточить свои усилия на ускорении. Удачи!
Tks очень много Флорис !!! –
Это решило вашу проблему? – Floris
Часть этого ... Я пытаюсь использовать нейронную сеть в кластере с использованием распределенного массива Я получаю классы Andrew NG в coursera ... Мое приложение ML занимает очень много времени, чтобы сходиться, поэтому я думаю, что использование распределенный массив для ускорения работы. Я борюсь с этим. Есть ли что-то быстрее, чем Matlab? –