предположим, что у нас есть 4-матричная матрица формы (A, B, C, D), f. И мы хотим сделать такой транспонирование, где f_transpose (i, j, k, c) = f (A-i + 1, B-j + 1, c, k). Это связано с backpropagation convnet, применяя conv-оператор для получения градиента conv-слоя. Может кто-нибудь мне помочь?Как сделать транспонирование 4-d массива, определенную как таковое, в numpy
0
A
ответ
2
Вы хотите перевернуть первые две оси и переключить последние два. Реверсивный ось может быть сделано с помощью ::-1
среза, и переключение осей numpy.swapaxes
:
g = numpy.swapaxes(f, 2, 3)[::-1, ::-1]
спасибо большое! Это помогает – jack
Еще один вопрос: если я хочу перенести первое измерение между третьим и четвертым измерениями? Должен ли я использовать swapaxes два раза или есть ли какое-нибудь однослойное решение? – jack
@jack Я предполагаю, что это будет: 'np.transpose (f, (1,2,0,3))'. – Divakar