Я создал сверточную нейронную сеть для обработки изображений в Керасе.Модель принимает изображение (768 x 64) в качестве входных данных и возвращает изображение того же размера.Рассмотрение модели с помощью отладчика PyCharm показывает, что выходная форма равна (?, 768,64,1), что совершенно нормально.
Теперь я пытаюсь сделать следующее: предположим, что мы имеемразмер партии равен 4, тогда на выходе будет тензор формы (4, 768, 64, 1).Соответственно old_matrix = output [k,:,:, 0] представляет собой (768 x 64) матрицу.Моя цель - умножить каждую из этих матриц на заданную матрицу преобразования с формой (128, 768).Фрагмент кода, показанный ниже, иллюстрирует идею.
Я проверил Умножение матриц в Керасе , Как реализовать умножение матриц в Керасе? и https://github.com/keras-team/keras/blob/master/keras/layers/merge.py#L416но ни одна из ссылок не дала удовлетворительного ответа на мой вопрос.
import numpy as np
old_matrix = output[k,:,:,0] # shape (764, 64)
transformation_matrix = ones(128, 768) # for simplicity simply 'ones'
new_matrix = np.matmul(transformation_matrix, old_matrix) # shape (128,64)
Я пытаюсь добиться следующего: преобразовать старый выходной тензор с формой (?, 768, 64, 1) вновый выходной тензор с формой (?, 128, 64, 1) такой, что мы имеем для каждого (неизвестного) k: new_tensor [k,:,:, 0] = translation_matrix * old_tensor [k,:,:, 0].Здесь * означает 2-мерное стандартное умножение матриц, т. Е. Нет поэлементного умножения, нет точечного произведения.Кто-нибудь знает как это сделать?Должен ли я реализовать собственный слой Keras для этого?Заранее спасибо!