【发布时间】:2020-11-15 10:10:15
【问题描述】:
我对 Keras 非常陌生,我正在尝试使用一维卷积实现 CNN,以对原始时间序列数据进行二进制分类。每个训练样例有 160 个时间步长,我有 120 个训练样例。训练数据的形状为 (120,160)。代码如下:
X_input = Input((160,1))
X = Conv1D(6, 5, strides=1, name='conv1', kernel_initializer=glorot_uniform(seed=0))(X_input)
X = Activation('relu')(X)
X = MaxPooling1D(2, strides=2)(X)
X = Conv1D(16, 5, strides=1, name='conv2', kernel_initializer=glorot_uniform(seed=0))(X)
X = Activation('relu')(X)
X = MaxPooling1D(2, strides=2)(X)
X = Flatten()(X)
X = Dense(120, activation='relu', name='fc1', kernel_initializer=glorot_uniform(seed=0))(X)
X = Dense(84, activation='relu', name='fc2', kernel_initializer=glorot_uniform(seed=0))(X)
X = Dense(2, activation='sigmoid', name='fc3', kernel_initializer=glorot_uniform(seed=0))(X)
model = Model(inputs=X_input, outputs=X, name='model')
X_train = X_train.reshape(-1,160,1) # shape (120,160,1)
t_train = y_train.reshape(-1,1,1) # shape (120,1,1)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train)
我得到的错误是expected fc3 to have 2 dimensions, but got array with shape (120, 1, 1)。
我尝试删除每一层,只留下“conv1”组件,但我收到错误expected conv1 to have shape (156, 6) but got array with shape (1, 1)。看来我的输入形状是错误的;但是,看看其他示例,这似乎对其他人有用。
【问题讨论】:
标签: machine-learning keras conv-neural-network