以下是模型中各层的输出形状:
- 输入层:`(None, 时间步长, 特征数)`,其中`None`表示样本数可以是任意值。
- 第一个卷积层:`(None, 时间步长 - 卷积核大小 + 1, 卷积核数量)`。卷积核数量由`filters`参数指定。
- 第一个池化层:`(None, (时间步长 - 卷积核大小 + 1) // 池化大小, 卷积核数量)`。池化大小由`pool_size`参数指定。
- 第二个卷积层:`(None, (时间步长 - 卷积核大小 + 1) // 池化大小 - 卷积核大小 + 2, 卷积核数量)`。
- 第二个池化层:`(None, ((时间步长 - 卷积核大小 + 1) // 池化大小 - 卷积核大小 + 2) // 池化大小, 卷积核数量)`。
- 多头注意力层:`(None, 卷积核数量 * 注意力头数)`。注意力头数由`attention_heads`参数指定。
- 高速公路网络:`(None, 卷积核数量 * 注意力头数)`。
- 输出层:`(None, 输出特征数)`,其中输出特征数由`output_dim`参数指定。
请注意,这里的`None`表示样本数可以是任意值,因为在定义模型时,我们使用了`input_shape=(None, input_dim)`来指定输入层的形状。在实际训练时,样本数会根据输入数据的批次大小而确定。