Tensorflow中的Conv1D混乱

时间:2018-07-03 17:46:46

标签: python tensorflow audio deep-learning signal-processing

由于尺寸问题,试图实施纸张并碰到一些砖墙。我的输入是单声道音频数据,其中128帧50ms的16kHz采样音频被馈送到网络中。所以我的输入形状是: [128,0.005 * 16000,1] 这是图层的详细信息-

1。)conv-bank块:Conv1d-bank-8,LeReLU,IN(实例归一化) 我使用:

class RegisterPage extends React.Component {
   constructor(props) {
      super(props);
   }
   // (...)
   handleCheckBox: (e) => {
       // do whatever you want to the value
   }
   render () {
       <Form>
           <Field name="email" type="email" />
           <Field name="password" type="password" />
           <Field 
               name="myCheckbox" 
               type="checkbox"
               checked={this.props.values.myCheckbox}
               onChange={(e) => {this.handleChange(e); this.handleCheckBox(e)}} />
       </Form>
   }
}

2。)conv-block:C-512-5,LReLu-> C-512-5,stride = 2,LReLu,IN,RES(剩余)

这是我被卡住的地方,第二次卷积的输出和(2)层的输入的形状不匹配。我无法解决这个问题。

我使用以下方法实现此目标:

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)

错误: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

1 个答案:

答案 0 :(得分:0)

当在块1上以stride = 2运行conv1d时,输入数据将减半,因为conv1d仅有效地采样备用编号,并且您更改了通道数。通常,这可以通过使用跨步2和过滤器512通过1x1 conv对输入进行下采样来解决,尽管我可以更具体地分享纸张。