Ну, ты хочешь этого в numpy или в Theano? В случае, когда, как вы заявляете, вы хотели бы сжимать ось 3 A против оси 2 из B, оба являются простыми:
import numpy as np
a = np.arange(3 * 4 * 5).reshape(3, 4, 5).astype('float32')
b = np.arange(3 * 5).reshape(3, 5).astype('float32')
result = a.dot(b.T)
в Theano это записывается как
import theano.tensor as T
A = T.ftensor3()
B = T.fmatrix()
out = A.dot(B.T)
out.eval({A: a, B: b})
, однако выход имеет форму (3, 4, 3). Поскольку вам кажется, что вы хотите получить форму (3, 4), альтернатива numpy использует einsum, например
einsum_out = np.einsum('ijk, ik -> ij', a, b)
Однако eanum не существует в Theano. Таким образом, конкретный случай здесь можно эмулировать следующим образом
out = (a * b[:, np.newaxis]).sum(2)
, который также может быть записан в Theano
out = (A * B.dimshuffle(0, 'x', 1)).sum(2)
out.eval({A: a, B: b})
После использования ниже команды на терминале, я в состоянии установить переходные приставки какао в своем проекте.
sudo gem install cocoapods --source http://rubygems.org
Я столкнулся с этой проблемой также, но зафиксировал ее меньшим количеством драматичного способа как различная переустановка / обновление. Просто обновленная переменная окружения PATH для указания на мое существующее (2.6.0) рубиновая версия.