Пошаговая обработка тензоров в партии - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно получить внешнее произведение каждого ряда тензора отдельно.Код выглядит так:

input1 = K.placeholder (shape = (None, 12)) prod = K.map_fn (someMethod, input1)

someMethod должен выполнить следующее:

*def someMethod(x):*
    ## get the outerproduct row-wise of input1 #
    outer=x*x.T
    ## subtract the identity matrix from the outer product #
    diff=outer-np.eye(12) 
    ## and return the trace of the difference matrix #
    trace=np.trace(diff)
    return trace

Я ожидаю, что значение трассировки будет скалярным, но продукт будет списком ввода размера пакета?Я использую plaidml в качестве бэкэнда, поэтому хотел бы, чтобы что-то работало с numpy или keras-бэкендом, или, возможно, тензорным потоком.

1 Ответ

1 голос
/ 21 июня 2019

Здравствуйте и добро пожаловать в Stack Overflow.

Для построчного внешнего произведения матрицы A используйте следующее:

outer_product = np.matmul(A[:,:,np.newaxis], A[:,np.newaxis,:])
...