当前位置: 首页 > 知识库问答 >
问题:

Keras构建9维特征向量网络

陆晓博
2023-03-14

我有以下简单的数据集。它由9个特征组成,是一个二元分类问题。特征向量的示例如下所示。每行都有相应的0,1标签。

30,82,1,2.73,172,117,2,2,655.94
30,174,1,5.8,256,189,3,2,587.28
98.99,84,2,0.84,577,367,3,2,1237.34
30,28,1,0.93,38,35,2,1,112.35
...

我知道CNN被广泛用于图像分类,但我正试图将其应用于我手头的数据集。我正在尝试应用5个大小为2的过滤器。鉴于这些数据的形状,我一直致力于以正确的方式构建网络。这是我构建网络的功能。

def make_network(num_features,nb_classes):
   model = Sequential()
   model.add(Convolution1D(5,2,border_mode='same',input_shape=(1,num_features)))
   model.add(Activation('relu'))
   model.add(Convolution1D(5,2,border_mode='same'))
   model.add(Activation('relu'))
   model.add(Flatten())
   model.add(Dense(2))
   model.add(Activation('softmax'))

最后,我还将调用一个测试函数来测试我创建的模型的准确性。下面的函数试图实现这一点

def train_model(model, X_train, Y_train, X_test, Y_test):

    sgd = SGD(lr=0.01, decay=1e-6, momentum=0.3, nesterov=True)
    model.compile(loss='binary_crossentropy', optimizer=sgd)
    model.fit(X_train, Y_train, nb_epoch=100, batch_size=10,
              validation_split=0.1, verbose=1)

    print('Testing...')
    res = model.evaluate(X_test, Y_test,
                         batch_size=batch_size, verbose=1, show_accuracy=True)
    print('Test accuracy: {0}'.format(res[1]))

当我建立模型并通过训练函数时,我得到以下错误

Using Theano backend.
Traceback (most recent call last):
  File "./cnn.py", line 69, in <module>
    train_model(model,x_train,y_train,x_test,y_test)
  File "./cnn.py", line 19, in train_model
    validation_split=0.1, verbose=1)
  File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 413, in fit
    sample_weight=sample_weight)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1011, in fit
    batch_size=batch_size)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 938, in _standardize_user_data
    exception_prefix='model input')
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 96, in standardize_input_data
    str(array.shape))
Exception: Error when checking model input: expected convolution1d_input_1 to have 3:(None, 1, 9) dimensions, but got array with shape (4604, 9)

我是Keras的新手。我正在尝试从这里改编代码。任何帮助或指点都将不胜感激。提前谢谢。

共有1个答案

袁凌
2023-03-14

您的代码<代码>模型。add(卷积1D(5,2,border\u mode='same',input\u shape=(1,num\u features)))定义输入应为shape(batch\u size,1,num\u features)。但是,X\U系列以及X\U测试可能处于形状(批次大小,9),这是不一致的。

def train_model(model, X_train, Y_train, X_test, Y_test):
    X_train = X_train.reshape(-1, 1, 9)
    X_test = X_test.reshape(-1, 1, 9)

    ....
 类似资料:
  • 自然语言具有范围广泛的语法结构,用8.中所描述的简单的方法很难处理的如此广泛的语法结构。为了获得更大的灵活性,我们改变我们对待语法类别如S、NP和V的方式。我们将这些原子标签分解为类似字典的结构,其特征可以为一个范围的值。 本章的目的是要回答下列问题: 我们怎样用特征扩展上下文无关语法框架,以获得更细粒度的对语法类别和产生式的控制? 特征结构的主要形式化属性是什么,我们如何使用它们来计算? 我们现

  • 我正在尝试创建一个特征对象的向量,但我得到了类型不匹配。我还尝试使用代替for循环,但遇到了同样的问题。这是我真实代码的最小版本,我意识到这个例子不需要使用特征对象,但我的真实代码需要,因为列表中除了之外还有其他类型,它们也实现了。如何使用正确的类型创建以便将其传递给?

  • 本文向大家介绍C++ Eigen库计算矩阵特征值及特征向量,包括了C++ Eigen库计算矩阵特征值及特征向量的使用技巧和注意事项,需要的朋友参考一下 本文主要讲解利用Eigen库计算矩阵的特征值及特征向量并与Matlab计算结果进行比较。 C++Eigen库代码 计算结果: 最大最小特征值及其索引位置 Matlab 代码 Matlab计算结果 使用sort()函数对特征值排序 主成份分析以及许多

  • (这是我第二次尝试追踪我的确切问题。查看编辑历史记录) 我有一个简单的通用特性和两种不同的实现: 我现在想要一个包含两个实现元素的向量。正如我在这里学到的,我做: 但是编译器不同意: 一方面,这是有道理的。另一方面,我应该为写什么?我希望它是通用的,所以我不能简单地在那里放或。我可以做

  • 我有一个多类分类问题。假设我有一个特征矩阵: 和标签: 我想尝试使用Keras沿每个特征行应用卷积核。假设nb\u filter=2,batch\u size=3。所以我希望卷积层的输入形状是(3,4),输出形状是(3,3)(因为它适用于AB、BC、CD)。 下面是我对Keras的尝试(v1.2.1,Theano后端): 形状: 输出: 当我尝试运行此代码时,我得到和异常: 我试图重塑y\U列车: