我有一系列处理过的音频文件,正在使用Keras输入到CNN中。Keras 1D卷积层是否支持可变的序列长度?Keras文档使其不清楚。
https://keras.io/layers/convolutional/
它在文档的顶部提到您可以对128维向量的可变长度序列使用(None,128)。但在底部,它声明输入形状必须为
3D tensor with shape: (batch_size, steps, input_dim)
Run Code Online (Sandbox Code Playgroud)
给定以下示例,我应如何将可变长度的序列输入网络
可以说我有两个示例(a和b),它们包含要输入到1DConv层中作为输入的长度为100的X 1维向量
3D tensor with shape: (batch_size, steps, input_dim)
Run Code Online (Sandbox Code Playgroud)
我可以使用(2,None,100)的输入形状吗?我需要将这些张量连接到c中吗
a.shape = (100, 100)
b.shape = (200, 100)
Run Code Online (Sandbox Code Playgroud)
然后重塑它成为某种东西
c.shape = (300, 100)
Run Code Online (Sandbox Code Playgroud)
其中批处理大小为3,步骤数为100,第二个为输入大小100?输入向量的文档不是很清楚。
None定义模型时,Keras通过在各个尺寸中使用来支持可变长度。
注意,通常input_shape是指没有批量大小的形状。
因此,具有形状的3D张量(batch_size, steps, input_dim)完全适合的模型input_shape=(steps, input_dim)。
要使该模型接受可变长度,您所需要做的就是None在步骤维度中使用:
input_shape=(None, input_dim)
Run Code Online (Sandbox Code Playgroud)
现在,关于可变长度有一个麻木的限制。您无法创建形状适合可变长度的numpy数组。
有两种解决方案:
(batch_size, length, input_dim)。使用Masking图层来区分虚拟值。 (1, length, input_dim),每个数组都有自己的长度。| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |