簡體   English   中英

我該如何解決這個錯誤? NameError:未定義名稱“模型”

[英]How can I solve this error? NameError: name ‘model’ is not defined

當我嘗試輸入文本以進行預測時,執行給我“NameError: name 'model' is not defined”

評估神經網絡模型

def evaluate_mode(Xtrain, ytrain, Xtest, ytest):

    scores = list()
    n_repeats = 2
    n_words = Xtest.shape[1]
    for i in range(n_repeats):
        # define network
        model = Sequential()
        model.add(Dense(50, input_shape=(n_words,), activation='relu'))
        model.add(Dense(1, activation='sigmoid'))
        # compile network
        model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
        # fit network
        model.fit(Xtrain, ytrain, epochs=10, verbose=2)
        # evaluate
        loss, acc = model.evaluate(Xtest, ytest, verbose=0)
        scores.append(acc)

        print('%d accuracy: %s' % ((i+1), acc))
    return scores

准備文檔的詞袋編碼

def prepare_data(train_docs, test_docs, mode):

    # create the tokenizer
    tokenizer = Tokenizer()
    # fit the tokenizer on the documents
    tokenizer.fit_on_texts(train_docs)
    # encode training data set
    Xtrain = tokenizer.texts_to_matrix(train_docs, mode=mode)
    # encode testing data set
    Xtest = tokenizer.texts_to_matrix(test_docs, mode=mode)
    return Xtrain, Xtest

def predict_sentiment(review, vocab, tokenizer, model):

        # clean
        tokens = clean_doc(review)
        # filter by vocab
        tokens = [w for w in tokens if w in vocab]
        # convert to line
        line = ' '.join(tokens)
        # encode
        encoded = tokenizer.texts_to_matrix([line], mode='freq')
        # prediction
        yhat = model.predict(encoded, verbose=0)
        return round(yhat[0,0])

如果在evaluate_mode()evaluate_mode()訓練過程,則模型是局部變量,不能與predict_sentiment()共享。 您應該讓evaluate_mode()返回model並讓predict_sentiment()將其作為第四個參數。

evaluate_mode函數中,您不會在不返回模型的情況下返回模型,因此會出現這種錯誤。在predict_statement 中返回下一個預測的模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM