我创建了用于在Keras中进行图像处理的卷积神经网络。该模型将图像(768 x 64)作为输入,并返回相同大小的图像。 使用PyCharm调试器查看该模型,结果显示输出形状为(?,768,64,1),非常好。
现在我想做的是以下几点: 假设我们的批处理大小为4,则输出将为形状的张量(4,768,64,1)。因此, old_matrix = output [k,:,:,0]是(768 x 64)矩阵。我的目标是将每个矩阵乘以形状为(128,768)的给定转换矩阵。下面显示的代码段说明了这个想法。
我检查了 Matrix multiplication in Keras , How to implement a matrix multiplication in Keras? 和 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] = Transformation_matrix * old_tensor [k,:,:,0]。 在此,*表示2-D标准矩阵乘法,即,没有逐元素乘法,也没有点积。有谁知道如何做到这一点?我是否必须为此实现自定义Keras层? 预先感谢!