我正在尝试创建一个CNN来对数据进行分类。我的数据是X[N_data, N_features],我想创建一个能够对其进行分类的神经网络。我的问题与Keras后端的Conv1D的输入形状有关。
我想在一个滤波器上重复使用…假设是10个特征,然后对接下来的10个特征保持相同的权重。对于每条数据,我的卷积层将创建N_features/10个新神经元。我该怎么做呢?我应该在input_shape中填写什么呢?
def cnn_model():model = Sequential() model.add(Conv1D(filters=1, kernel_size=10 ,strides=10, input_shape=(1, 1,N_features),kernel_initializer= 'uniform', activation= 'relu')) model.flatten()model.add(Dense(N_features/10, init= 'uniform' , activation= 'relu' ))
有什么建议吗?谢谢!
回答:
@的回答可能有效,但根据这里的文档,我的建议是:
当使用此层作为模型中的第一层时,提供一个input_shape参数(整数或None的元组,例如(10, 128)表示10个128维向量的序列,或(None, 128)表示可变长度的128维向量序列)。
应该是这样的:
model = Sequential()model.add(Conv1D(filters=1, kernel_size=10 ,strides=10, input_shape=(None, N_features),kernel_initializer= 'uniform', activation= 'relu'))
请注意,由于输入数据是(N_Data, N_features),我们将示例数量设置为未指定(None)。在这种情况下,strides
参数控制时间步长的大小。