在Keras(神经网络库)中以某种方式可以用固定/给定numpy
数组进行乘法运算吗?
我喜欢将2D卷积的输出乘以矩阵。我尝试使用Backend.dot
,但它似乎不起作用(我总是得到一些错误,如numpy.ndarray
对象没有属性get_shape
)。
谢谢
-edit -
我找到了一个解决方案(已经是昨天,无论如何:感谢您的评论)。我喜欢将2D光谱转换为网络内的2D-mel光谱(不可训练)。二维谱图可以看作是一个大矩阵,然后可以通过矩阵乘法计算梅谱图。
长话短说:我使用了TimeDistributed Dense-Layer而没有偏见。我只是加载权重(=常数矩阵),就是这样:
# Change time / frequency axis (required for TimeDistributed)
nw = input_layer
nw = Permute((2, 1))(nw)
# Create a layer that computes the Mel spectrogram
mel_basis = librosa.filters.mel(22050, N_FFT)[:, :spectrogram_freqs] # The spectrogram has only spectrogram_freqs frequencies
mel_layer = TimeDistributed(Dense(mel_basis.shape[0], bias=False, trainable=False))
nw = mel_layer(nw)
mel_layer.set_weights([np.transpose(mel_basis)])
# Change the time / frequency axis
nw = Permute((2, 1))(nw)