首页 文章

Tensorflow中的Conv1D混淆

提问于
浏览
0

由于某些维度问题,试图实现一篇论文并遇到一些砖墙 . 我的输入是单声道音频数据,其中128帧50ms的16kHz采样音频被馈送到网络中 . 所以我的输入形状是:[128,0.005 * 16000,1]这是图层细节 -

1.)转储块:Conv1d-bank-8,LeReLU,IN(实例规范化)我使用以下方法实现:

bank_width = 8
conv_bank_outputs = tf.concat([ tf.layers.conv1d(input,1,k,activation=tf.nn.leaky_relu,padding="same") for k in range(1, bank_width + 1)], axes = -1)

2.)conv-block:C-512-5,LReLu - > C-512-5,stride = 2,LReLu,IN,RES(残差)

这就是我卡住的地方,第二卷积输出的形状和(2)层的输入不匹配 . 我无法理解它 .

我使用以下方法实现:

block_1 = tf.layers.conv1d(input,filters=512,kernel_size=5,activation=tf.nn.leaky_relu,padding="same")
block_2 = tf.layers.conv1d(block_1,filters=512,kernel_size=5,strides=2,activation=tf.nn.leaky_relu,padding="same")
IN = tf.contrib.layers.instance_norm(block_2)
RES = IN + input

错误: ValueError: Dimensions must be equal, but are 400 and 800 for 'add' (op: 'Add') with input shapes: [128,400,512], [128,800,1024].

1 回答

  • 0

    当您使用stride = 2在block1上运行conv1d时,输入数据减半,因为conv1d有效地仅对备用数字进行采样,并且您还更改了通道数 . 这通常通过使用步幅2和滤波器512对1x1转换进行下采样输入来解决,但如果您可以共享纸张,我可以更具体 .

相关问题