Python 如何使用tensorflow实现两个张量的元素卷积?
在我的问题中,我想在我的神经网络模型中卷积两个张量 两个张量的形状分别为[None,2,1],[None,3,1]。尺寸为None的轴表示输入张量的批量大小。对于批次中的每个样本,我想用[2,1]和[3,1]形状卷积两个张量 然而,TensorFlow中的tf.nn.conv1d只能使用固定的内核对输入进行卷积。是否有任何函数可以根据批量大小轴支持两个张量的卷积,类似于tf.multiply,它可以将每个样本的两个张量相乘,或者只是元素相乘 我运行的代码可以简化如下:Python 如何使用tensorflow实现两个张量的元素卷积?,python,tensorflow,conv-neural-network,Python,Tensorflow,Conv Neural Network,在我的问题中,我想在我的神经网络模型中卷积两个张量 两个张量的形状分别为[None,2,1],[None,3,1]。尺寸为None的轴表示输入张量的批量大小。对于批次中的每个样本,我想用[2,1]和[3,1]形状卷积两个张量 然而,TensorFlow中的tf.nn.conv1d只能使用固定的内核对输入进行卷积。是否有任何函数可以根据批量大小轴支持两个张量的卷积,类似于tf.multiply,它可以将每个样本的两个张量相乘,或者只是元素相乘 我运行的代码可以简化如下: input_signal
input_signal = Input(shape=(L, M), name='input_signal')
input_h = Input(shape=(N), name='input_h')
faded= Lambda(lambda x: tf.nn.conv1d(input, x))(input_h)
我想做的是,输入信号的样本可以被具有相同索引的输入信号的样本卷积。不过,这只是显示了我纯粹的想法,不能在环境中运行。我的问题是,如何修改代码以启用输入张量可以与批处理中每个样本的另一个输入张量进行卷积。根据Conv1D层或中提到的任何其他层的内核大小参数的描述,您不能添加具有不同内核大小或步长的多个过滤器 此外,与不同大小的内核进行卷积将产生不同高度和宽度的输出。 假设核对称,输出大小的一般公式如下所示: (十)−K+2P)/S+1
- 其中X是输入高度/宽度
- K是内核大小
- P是零填充
- S是步长
inputs = tf.keras.Input(shape=(n_timesteps,n_features))
x1 = tf.keras.layers.Conv1D(filters=32, kernel_size=2)(inputs)
x2 = tf.keras.layers.Conv1D(filters=16, kernel_size=3)(inputs)
#match dimensions (height and width) of x1 or x2 here
x3 = tf.keras.layers.Concatenate(axis=-1)[x1,x2]
您可以使用或来匹配尺寸