hongzimao / pensieve

Neural Adaptive Video Streaming with Pensieve (SIGCOMM '17)
http://web.mit.edu/pensieve/
MIT License
517 stars 280 forks source link

a question about conv1d #107

Open linnaeushuang opened 4 years ago

linnaeushuang commented 4 years ago

hi,mao

your work inspired me a lot. now, i have a question about your code. In your network: split_2 = tflearn.conv_1d(inputs[:, 2:3, :], 128, 4, activation='relu') the input of this conv1d is [batch ,feture ,S_LEN].we can get this output with shape [batch ,1 ,128]. when I read the tensorflow's doc,I found that conv1d uses NHWC format. This means that conv1d's input is [batch , step length ,input_channels].I tried to fix your kernel_size to 8 or 16 or 40,but I still get the same output with shape [batch ,1 ,128]. Tensorflow seem to do some work to avoid (kernel_size > step length). I think this code doesn't do real convolution,otherwise the output's shape will change with kernel_size.Do I understand correctly? I can get good QOE performance from your code,but is the NN consistent with the description of paper?

wait for your reply,thanks.

hongzimao commented 4 years ago

If I understand it correctly, this makes the filter size 1 for the 1D conv. This issue might be related #68. It's unlikely but tensorflow might have chaned the convolution format over the years. Can you try fixing the convolution dimension and see if it improves the performance? Thanks!

linnaeushuang commented 4 years ago

I use tensorflow v1.12 and tflearn v0.3.2. The convolution format has not changed in v1.1 and v1.12 (see,https://github.com/tensorflow/tensorflow/blob/r1.1/tensorflow/python/layers/convolutional.py#L197-L201) After fixing the convolution format like this: split_2_inputs = tf.transpose(inputs[:,2:3,:] ,[0,2,1]) split_2 = tflearn.conv_1d(split_2_inputs,128,4,activation='relu',padding='valid') I get a results like this: testqoe The final performance doesn't seem to improve

ps: In tflearn ,padding='same' is defualt. When I didn't fix the convolution dimension and just fixed it to 'valid',I got an error.

hongzimao commented 4 years ago

The blue curve seems to generally stays above the orange curve, which is an improvement I think. If you repeat the experiment multiple times with different random seed and this behavior still holds, I think it then shows fix has a positive effect.