首先上观点:
一维卷积的卷积核是二维的,二维卷积的卷积核是三维的
一维池化的池化核是一维的,二维池化的池化核是二维的
为什么卷积的时候卷积核维度多了一维呢?因为有通道(channel)的存在。比如对于语音处理中常用的特征MFCC,一般来说网络的输入是[timestep, num_mfcc],对其使用一维卷积,则有:
import numpy as np
import tensorflow as tf
tf.enable_eager_execution()
np.random.seed(0)
timestep = 2
num_mfcc = 3
mfcc = np.random.rand(1,timestep,num_mfcc)
print(mfcc.shape)
print(mfcc)
mfcc = tf.convert_to_tensor(mfcc,dtype=tf.float32,name='mfcc')
out = tf.keras.layers.Conv1D(filters=4,kernel_size=2,strides=1,padding="same")(mfcc)
print(out.numpy().shape)
print(out.numpy())
# 结果
(1, 2, 3)
[[[0.5488135 0.71518937 0.60276338]
[0.54488318 0.4236548 0.64589411]]]
(1, 2, 4)
[[[ 0.07261014 -0.5585