[英]Sentiment analysis model return identical output for any input
所以我做了這個情緒分析 model,它在訓練測試腳本中工作得很好。 我使用 streamlit 為我保存的 model 構建了一個簡單的界面,但它總是為任何輸入文本返回相同的分數。 另外,當它應該只為單個輸入返回一個分數時,它以某種方式返回了這么多分數。
這是我的代碼:
import streamlit as st
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
import numpy as np
import pickle
with open("tokenizer.pkl", "rb") as f:
tokenizer = pickle.load(f)
@st.cache(allow_output_mutation=True)
def load_model():
model = tf.keras.models.load_model('C:/Users/k/Downloads/test/model_final.h5')
return model
if __name__ == '__main__':
model = load_model()
st.title('Analisis Sentimen')
txt = st.text_input('masukkan teks')
if not txt:
st.warning("masukkan teks sebelum lanjut")
st.stop()
else:
text = txt
text = tokenizer.texts_to_sequences(text)
text = pad_sequences(text)
prediction = model.predict(text)
st.title('sentimen: ')
if (prediction > 0.5).any():
st.write(prediction)
st.write('positif')
else:
st.write(prediction)
st.write('negatif')
ML 幾乎都是反復試驗。 我像下面這樣修改了model,得到了很好的效果。 請嘗試更改 model。
model = Sequential()
embedding_size = 50
model.add(Embedding(input_dim=1500,output_dim=embedding_size,input_length=max_tokens,name='embedding_layer'))
model.add(LSTM(16,))
model.add(Dropout(0.8))
model.add(Dense(16,))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
optimizer = Adam()
model.compile(loss=tf.keras.losses.BinaryCrossentropy(),optimizer=optimizer,metrics=['accuracy'])
請在此處找到工作代碼。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.