错误检查输入:期望embedding_1输入的形状为,但得到的形状为

我已经成功创建了我的Keras顺序模型,并对其进行了训练。现在我尝试进行一些预测,但即使使用与训练阶段相同的数据,预测也失败了。

我收到了这个错误:{ValueError}检查输入时出错:期望embedding_1_input的形状为(2139,),但得到的数组形状为(1,)

然而,当我检查尝试使用的输入时,它显示为(2139,)。我想知道是否有人知道这可能是什么原因

    df = pd.read_csv('../../data/parsed-data/data.csv')    df = ModelUtil().remove_entries_based_on_threshold(df, 'Author', 2)    #show_column_distribution(df, 'Author')    y = df.pop('Author')    le = LabelEncoder()    le.fit(y)    encoded_Y = le.transform(y)    tokenizer, padded_sentences, max_sentence_len \        = PortugueseTextualProcessing().convert_corpus_to_number(df)    ModelUtil().save_tokenizer(tokenizer)    vocab_len = len(tokenizer.word_index) + 1    glove_embedding = PortugueseTextualProcessing().load_vector(tokenizer)    embedded_matrix = PortugueseTextualProcessing().build_embedding_matrix(glove_embedding, vocab_len, tokenizer)    cv_scores = []    kfold = StratifiedKFold(n_splits=4, shuffle=True, random_state=7)    models = []    nn = NeuralNetwork()    nn.build_baseline_model(embedded_matrix, max_sentence_len, vocab_len, len(np_utils.to_categorical(encoded_Y)[0]))    # Separate some validation samples    val_data, X, Y = ModelUtil().extract_validation_data(padded_sentences, encoded_Y)    for train_index, test_index in kfold.split(X, Y):        # convert integers to dummy variables (i.e. one hot encoded)        dummy_y = np_utils.to_categorical(Y)        print("TRAIN:", train_index, "TEST:", test_index)        X_train, X_test = X[train_index], X[test_index]        y_train, y_test = dummy_y[train_index], dummy_y[test_index]        nn.train(X_train, y_train, 100)        scores = nn.evaluate_model(X_test, y_test)        cv_scores.append(scores[1] * 100)        models.append(nn)    print("%.2f%% (+/- %.2f%%)" % (np.mean(cv_scores), np.std(cv_scores)))    best_model = models[cv_scores.index(max(cv_scores))]    best_model.save_model()    best_model.predict_entries(X[0]) 

执行预测和模型创建的方法

    def build_baseline_model(self, emd_matrix, long_sent_size, vocab_len, number_of_classes):        self.model = Sequential()        embedding_layer = Embedding(vocab_len, 100, weights=[emd_matrix], input_length=long_sent_size,                                        trainable=False)        self.model.add(embedding_layer)        self.model.add(Dropout(0.2))        self.model.add(Flatten())        # softmax表现比relu更好        self.model.add(Dense(number_of_classes, activation='softmax'))        self.model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])        return self.model    def predict_entries(self, entry):        predictions = self.model.predict_classes(entry)        # 显示输入和预测的输出        print("X=%s, Predicted=%s" % (entry, predictions[0]))        return predictions

X[0].shape的计算结果为:(2139,)


回答:

在你的情况下,你应该应用一个reshape操作,以便你能得到一个包含句子的唯一元素的数组。

X_reshape = X[0].reshape(1, 2139)

best_model.predict_entries(X_reshape)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注