简单神经网络的可变长度输入 (Keras)

Variable length input for a simple neural network (Keras)

可以将可变长度,即 input_dim=None 应用于简单的神经网络吗?具体来说,Keras Sequential 模型。在尝试使用相同的概念时,我曾 运行 犯过错误。我已经看过似乎支持此功能的文档:

https://keras.io/getting-started/functional-api-guide/

但是当我执行以下操作时...

model = Sequential()
model.add(Dense(num_feat, input_dim = None, kernel_initializer = 'normal', activation='relu'))
model.add(Dense(num_feat, kernel_initializer = 'normal', activation = 'relu'))
model.add(Dropout(.2))
model.add(Dense(num_feat, kernel_initializer = 'normal', activation = 'relu'))
model.add(Dropout(.2))
model.add(Dense(num_feat, kernel_initializer = 'normal', activation = 'relu'))
model.add(Dropout(.2))
model.add(Dense(ouput.shape[1], kernel_initializer = 'normal', activation = 'linear'))

...我收到此错误:

ValueError: ('Only Theano variables and integers are allowed in a size-tuple.', (None, 63), None)

如有任何帮助、想法或说明,我们将不胜感激!

不,你不能。 (而且你也不能使用函数 API)

权重矩阵有一个固定的大小,这个大小取决于输入暗淡。

可能的可变维度是:

  • 在卷积中:空间维度,而不是 channels/filters
    • 1D: input_shape=(None,channels)
    • 二维:input_shape=(None,None,channels)
    • 3D: input_shape=(None,None,None,channels)
  • 在循环层中:时间步维度,而不是特征维度
    • input_shape = (None, features)
  • 在任何图层中,"batch" 维度,但这通常不会设置,除非您使用 batch_shapebatch_input_shape 而不是 input_dim
    • 对于密集型:batch_shape=(None,input_dim)batch_input_shape=(None,input_dim)