如何解决重塑训练和测试数据
我是编程新手。我正在尝试使用一维 CNN 基于两个特征(长度、交通量)对两个类别(碰撞、非碰撞)进行分类。当我尝试训练以下模型时,
# Training and Testing Data
X_train,y_train = train[['Traffic_Volume','length']].values,train['Crash'].values
X_test,y_test = SH[['Traffic_Volume',SH['Crash'].values
print ('Training data shape : ',X_train.shape,y_train.shape)
print ('Testing data shape : ',X_test.shape,y_test.shape)
# Training data shape : (316,2) (316,)
# Testing data shape : (343,2) (343,)
# Fit and Evaluate a Model
def baseline_model(n_features=343,seed=100):
numpy.random.seed(seed)
# set_random_seed(seed)
tensorflow.random.set_seed(seed)
# create model
model = Sequential()
model.add(Conv1D(32,3,padding = "same",input_shape=(343,2)))
model.add(Activation('relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128,activation='relu'))
model.add(Dropout(0.2))#
model.add(Dense(64,activation='relu'))#
model.add(Dense(2))
model.add(Activation('softmax'))
# Compile model
numpy.random.seed(seed)
tensorflow.random.set_seed(seed)
model.compile(loss='categorical_crossentropy',optimizer='adagrad',metrics=['accuracy'])
print (model.summary())
return model
# Classification
n_features=2
n_classes=2
batch_size=10
from multi_adaboost_CNN import AdaBoostClassifier as Ada_CNN
n_estimators =10
epochs =1
bdt_real_test_CNN = Ada_CNN(
base_estimator=baseline_model(n_features=n_features),n_estimators=n_estimators,learning_rate=1,epochs=epochs)
bdt_real_test_CNN.fit(X_train,y_train,batch_size)
y_pred_CNN = bdt_real_test_CNN.predict(X_train)
print('\n Training accuracy of bdt_real_test_CNN (AdaBoost+CNN): {}'.format(accuracy_score(bdt_real_test_CNN.predict(X_train),y_train)))
我发现了这个 ValueError:
ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=3,found ndim=2. Full shape received: (None,2)
我想知道我应该改变什么才能获得高效的模型(Data.shape
、n_features
、n_classes
等)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。