keras ฝังเวกเตอร์กลับไปเป็นหนึ่งร้อน

ฉันใช้ keras ในปัญหา NLP มีคำถามเรื่องการฝังคำมาครับ เมื่อผมพยายามคาดเดาคำถัดไปตามคำก่อนหน้า ฉันได้เปลี่ยนคำที่ร้อนแรงเป็นคำเวกเตอร์ผ่านเลเยอร์การฝัง keras เช่นนี้:

word_vector = Embedding(input_dim=2000,output_dim=100)(word_one_hot)

และใช้ word_vector นี้เพื่อทำบางสิ่งบางอย่าง จากนั้นโมเดลก็ให้ word_vector อีกอันในที่สุด แต่ต้องดูว่าคำทำนายจริงๆ คืออะไร ฉันจะเปลี่ยน word_vector กลับเป็น word_one_hot ได้อย่างไร


person MeteorKepler    schedule 22.04.2017    source แหล่งที่มา


คำตอบ (1)


คำถามนี้เก่าแต่ดูเหมือนว่าจะเชื่อมโยงกับจุดที่สร้างความสับสนว่าการฝังคืออะไรและมีวัตถุประสงค์อะไร

ก่อนอื่น คุณไม่ควรแปลงเป็นอันร้อนแรงหากคุณจะฝังในภายหลัง นี่เป็นเพียงขั้นตอนที่สูญเปล่า

เริ่มต้นจากข้อมูลดิบของคุณ คุณจะต้องสร้างโทเค็น นี่เป็นเพียงกระบวนการในการกำหนดจำนวนเต็มที่ไม่ซ้ำกันให้กับแต่ละองค์ประกอบในคำศัพท์ของคุณ (ชุดของคำ/อักขระที่เป็นไปได้ทั้งหมด [ที่คุณเลือก] ในข้อมูลของคุณ) Keras มีฟังก์ชั่นอำนวยความสะดวกสำหรับสิ่งนี้:

from keras.preprocessing.sequence import pad_sequences
from keras.preprocessing.text import Tokenizer
max_words = 100 # just a random example, 
# it is the number of most frequently occurring words in your data set that you want to use in your model.
tokenizer = Tokenizer(num_words=max_words)
# This builds the word index
tokenizer.fit_on_texts(df['column'])

# This turns strings into lists of integer indices.
train_sequences = tokenizer.texts_to_sequences(df['column'])

# This is how you can recover the word index that was computed
print(tokenizer.word_index)

การฝังทำให้เกิดการเป็นตัวแทน เลเยอร์ต่อมาในโมเดลของคุณใช้การนำเสนอก่อนหน้านี้เพื่อสร้างการนำเสนอที่เป็นนามธรรมมากขึ้น การเป็นตัวแทนขั้นสุดท้ายจะใช้เพื่อสร้างการแจกแจงความน่าจะเป็นเหนือจำนวนคลาสที่เป็นไปได้ (สมมติว่ามีการจัดหมวดหมู่)

เมื่อแบบจำลองของคุณทำการทำนาย โมเดลจะให้ข้อมูลการประมาณความน่าจะเป็นสำหรับจำนวนเต็มแต่ละตัวใน word_index ดังนั้น 'cat' เป็นคำถัดไปที่น่าจะเป็นไปได้มากที่สุด และ word_index ของคุณมีค่าประมาณ {cat:666} ตามหลักการแล้ว โมเดลนี้น่าจะให้โอกาสสูงสำหรับ 666 (ไม่ใช่ 'cat') สิ่งนี้สมเหตุสมผลหรือไม่? แบบจำลองนี้ไม่ได้ทำนายเวกเตอร์ที่ฝังเลย เวกเตอร์ที่ฝังนั้นเป็นตัวแทนสื่อกลางของข้อมูลอินพุตที่ (หวังว่า) จะมีประโยชน์สำหรับการทำนายจำนวนเต็มที่เกี่ยวข้องกับคำ / ตัวอักษร / คลาส

person shallow_water    schedule 29.09.2017