0

私はこのコード自体について話しますが、私はモデルを訓練しました。新しい入力データは間違った次元であるようです。以下は、あなたがメッセージを予測し、エラーしようとしているため今Kerasからmodel.predict()を使用しようとしたときの寸法が間違っています

tokenizer = Tokenizer(num_words=10000) 

df = pd.read_csv('/home/paperspace/Sentiment Analysis Dataset.csv', index_col = 0, 
       error_bad_lines = False) 

y = list(df['Sentiment']) 

tokenizer.fit_on_texts(list(df['SentimentText'])) 
X = tokenizer.texts_to_sequences(list(df['SentimentText'])) 
X = pad_sequences(X) 

print("Done, fitting on texts.") 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15, shuffle = True) 

model = Sequential() 
#Creates the wordembeddings. 
embedding_vector_dim = 32 
model.add(Embedding(10000, embedding_vector_dim, input_length=X.shape[1])) 
model.add(Dropout(0.2)) 
model.add(LSTM(128)) 
model.add(Dropout(0.2))   
model.add(Dense(1, activation='sigmoid')) 

model.compile(loss='binary_crossentropy', 
       optimizer='adam', 
       metrics=['accuracy']) 
model.summary() 


model.fit(numpy.array(X_train), numpy.array(y_train), 
      batch_size=128, 
      epochs=1, 
      validation_data=(numpy.array(X_test), numpy.array(y_test))) 
score, acc = model.evaluate(numpy.array(X_test),numpy.array(y_test), 
          batch_size=128) 

model.save('./sentiment_seq.h5') 

print('Test score:', score) 
print('Test accuracy:', acc) 

(未遂)モデルと予測の両方のためのコードとエラーメッセージを表示することができます。

text = "this is actually a fucking shit movie." 
tokenizer = Tokenizer() 

tokenizer.fit_on_texts(list(text)) 
X = tokenizer.texts_to_sequences(list(text)) 
X = pad_sequences(X) 
X_flat = np.array([X.flatten()]) 


model = load_model('sentiment_test.h5') 
model.compile(loss='binary_crossentropy', 
       optimizer='adam', 
       metrics=['accuracy']) 
print(model.predict(X, batch_size = 1, verbose = 1)) 

ValueError: Error when checking : expected embedding_1_input to have shape (None, 116) but got array with shape (1, 38) 

だから基本的に、なぜ私は、前処理が同じであればトレーニングと予測する場合、このエラーを取得していますし、どのように私は、期待入力がエラーメッセージを見る前にあるべきかを知ることができますか?

答えて

1

固定の入力長で作業していない場合は、埋め込みレイヤーにinput_lengthを定義しないでください。

+0

私はそれを理解したようです。私は固定された入力を私が文章を詰め込んだと仮定し、明らかにX.shape [1]が何であるか把握し、予測するときにその長さに新しい入力をすべて埋めなければならないと考えました。 – sn3jd3r

関連する問題