错误的维数。 Keras

问题描述:

我有麻烦抓住形状输入到网络的第一层。这是我的架构:错误的维数。 Keras

# Model Hyperparameters 
    filter_sizes = [1, 2, 3, 4, 5] 
    num_filters = 10 
    dropout_prob = [0.5, 0.8] 
    hidden_dims = 50 

    model_input = Input(shape=(X.shape[0], X.shape[1])) 
    z = model_input 
    z = Dropout(0.5)(z) 

    # Convolutional block 
    conv_blocks = [] 
    for fz in filter_sizes: 
     conv = Convolution1D(filters=num_filters, 
          kernel_size=fz, 
          padding="valid", 
          activation="relu", 
          strides=1)(z) 
     conv = MaxPooling1D(pool_size=2)(conv) 
     conv = Flatten()(conv) 
     conv_blocks.append(conv) 

    z = Concatenate()(conv_blocks) if len(conv_blocks) > 1 else conv_blocks[0] 

    z = Dropout(dropout_prob[1])(z) 
    z = Dense(hidden_dims, activation="relu")(z) 
    model_output = Dense(3, activation="softmax")(z) 

    model = Model(model_input, model_output) 
    model.fit(X[train], to_categorical(y[train], num_classes=3)) 



ValueError: Error when checking input: expected input_1 to have 3 dimensions, but got array with shape (12547, 261) 

这是我的数据看起来像:

array([[ 1, 2, 3, ..., 0, 0, 0], 
     [ 5, 6, 7, ..., 0, 0, 0], 
     [15, 10, 4, ..., 0, 0, 0], 
     ..., 
     [ 5, 6, 8, ..., 0, 0, 0], 
     [11, 10, 14, ..., 0, 0, 0], 
     [14, 8, 8, ..., 0, 0, 0]]) 

我有14640个样品261点的尺寸

由于错误说,这是一个整形的问题输入的形状(model_input)应与您在model.fit中输入的数据的输入形状匹配。fit

重新检查您的形状使用: from keras import backend as K K.shape(input _tensor)如果它是张量 或np.shape()如果它是一个numpy数组。 此外,如果形状不匹配(以后也不会)使用功能 K.reshape 富勒更帮忙看看keras /后端API

据Keras documentation,Convolution1D层接受三维张量作为其输入。您需要在输入数据中提供step作为额外维度。 您可以查看此link以获取更多信息。