Различные Numpy преобразования в синтаксис 3D-массива - PullRequest
1 голос
/ 30 января 2020

Я смотрю на нейронные сети LSTM. Я видел код, подобный приведенному ниже:

X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))

Этот код предназначен для преобразования двумерного массива в трехмерный, но синтаксис мне не подходит, или, по крайней мере, я его не понимаю. Например, я бы предположил, что этот код ниже, как 3d-синтаксис

np.reshape(rows , columns, dimensions)

Может ли кто-нибудь уточнить, что такое синтаксис и что он пытается сделать.

1 Ответ

0 голосов
/ 30 января 2020

Функция numpy.reshape придает массиву новую форму без изменения его данных. Это numpy пакетная функция. Прежде всего, он должен знать, что нужно изменить, что является первым аргументом этой функции (в вашем случае вы хотите изменить X_train).

Тогда нужно знать, какова форма вашей новой матрицы. Этот аргумент должен быть кортежем. Для 2D-преобразования вы можете передать (W,H), для трехмерного вы можете передать (W,H,D), для четырехмерного вы можете передать (W,H,D,T) и т. Д.

Однако вы также можете позвонить reshape a Numpy матрица по X_train.reshape((W,H,D)). В этом случае, поскольку функция reshape является методом объекта X_train, вам не нужно передавать его и только передавать новую форму.

Стоит также отметить, что общее количество элементов в матрице с новой формой, должна соответствовать вашей исходной матрице. Например, ваш 2D X_train имеет X_train.shape[0] x X_train.shape[1] элементов. Это значение должно быть равно W x H x D.

...