2016-01-07 11 views
5

मैं थानो का उपयोग कर बाइनरी एलएसटीएम वर्गीकरण करने की कोशिश कर रहा हूं। मैं उदाहरण कोड से गुजर चुका हूं हालांकि मैं अपना खुद का निर्माण करना चाहता हूं।एलएसटीएम बाइनरी वर्गीकरण के लिए बिल्डिंग स्पीच डेटासेट

मेरे पास "हैलो" & "अलविदा" रिकॉर्डिंग का एक छोटा सा सेट है जिसका मैं उपयोग कर रहा हूं। मैं उनके लिए एमएफसीसी सुविधाओं को निकालने और इन सुविधाओं को एक टेक्स्ट फ़ाइल में सहेजकर प्रीप्रोसेस करता हूं। मेरे पास 20 भाषण फ़ाइलें हैं (प्रत्येक 10) और मैं प्रत्येक शब्द के लिए एक टेक्स्ट फ़ाइल उत्पन्न कर रहा हूं, इसलिए 20 टेक्स्ट फाइलें जिनमें एमएफसीसी सुविधाएं शामिल हैं। प्रत्येक फ़ाइल एक 13x56 मैट्रिक्स है।

मेरी समस्या अब है: मैं एलएसटीएम को प्रशिक्षित करने के लिए इस पाठ फ़ाइल का उपयोग कैसे करूं?

मैं इसके लिए अपेक्षाकृत नया हूं। मैं इस पर कुछ साहित्य भी चला गया हूं लेकिन अवधारणा की वास्तव में अच्छी समझ नहीं मिली है।

एलएसटीएम का उपयोग करने का कोई आसान तरीका भी स्वागत होगा।

उत्तर

6

रहे हैं कई मौजूदा कार्यान्वयन उदाहरण Tensorflow Implementation, Kaldi-focused implementation with all the scripts के लिए, यह उन्हें पहले की जांच करने के लिए बेहतर है।

थेनो बहुत कम स्तर वाला है, तो आप tutorial में वर्णित अनुसार keras के साथ प्रयास कर सकते हैं। चीजें कैसे जाती हैं यह समझने के लिए आप "जैसा है" ट्यूटोरियल चला सकते हैं।

फिर, आपको एक डेटासेट तैयार करने की आवश्यकता है। आपको डेटा डेटा के अनुक्रमों में अपने डेटा को चालू करने और अनुक्रम में प्रत्येक डेटा फ्रेम के लिए आपको आउटपुट लेबल असाइन करने की आवश्यकता है।

केरा दो प्रकार के आरएनएन का समर्थन करता है - परतों को वापस करने वाले अनुक्रम और परतों को सरल मान लौटाते हैं। आप दोनों के साथ प्रयोग कर सकते हैं, कोड में आप सिर्फ का उपयोग return_sequences=True या return_sequences=False

दृश्यों के साथ प्रशिक्षित करने के लिए आप पिछले एक जहां शब्द आप को पहचान करना चाहते हैं के लेबल प्रदान कर सकते हैं के अलावा सभी फ्रेम के लिए डमी लेबल असाइन कर सकते हैं। आपको सरणी में इनपुट और आउटपुट लेबल रखने की आवश्यकता है। तो यह हो जाएगा:

X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]] 

Y = [[0,0,...,1], [0,0,....,2]] 

एक्स में हर तत्व 13 तैरता का एक वेक्टर है। वाई में प्रत्येक तत्व इंटरमीडिएट फ्रेम और अंतिम फ्रेम के लिए शब्द आईडी के लिए सिर्फ एक संख्या है।

केवल लेबल के साथ ट्रेन करने के लिए आपको एरे और आउटपुट सरणी में इनपुट और आउटपुट लेबल रखने की आवश्यकता है। तो डेटा हो जाएगा:

X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]] 

Y = [[0,0,1], [0,1,0]] 

ध्यान दें कि उत्पादन vectorized है (np_utils.to_categorical) सिर्फ संख्या के बजाय वैक्टर करने के लिए इसे चालू करने के।

फिर आप नेटवर्क आर्किटेक्चर बनाते हैं। आपके पास आउटपुट के लिए वेक्टर इनपुट के लिए 13 फ्लोट हो सकते हैं। बीच में आपके पास एक पूरी तरह से कनेक्ट परत हो सकती है जिसके बाद एक एलएसटीएम परत हो सकती है। बहुत बड़ी परतों का उपयोग न करें, छोटे से शुरू करें।

फिर आप इस डेटासेट को model.fit में फ़ीड करते हैं और यह आपको मॉडल को प्रशिक्षित करता है। आप प्रशिक्षण के बाद आयोजित सेटआउट पर मॉडल की गुणवत्ता का आकलन कर सकते हैं।

आपके पास अभिसरण के साथ समस्या होगी क्योंकि आपके पास केवल 20 उदाहरण हैं। आपको एलएसटीएम को प्रशिक्षित करने के लिए हजारों उदाहरणों की आवश्यकता है, आप केवल बहुत छोटे मॉडल का उपयोग करने में सक्षम होंगे।

+0

अरे, मार्गदर्शन के लिए धन्यवाद। क्या आप किसी भी डेटासेट को जानते हैं जिसमें 100 हैलो और अलविदा रिकॉर्ड है? –

+1

आप यहां अलग-अलग अंकों का डेटाबेस डाउनलोड कर सकते हैं: http://www.ece.ucsb.edu/Faculty/Rabiner/ece259/speech%20recognition%20course.html, प्रत्येक अंक –

+0

के लिए लगभग 200 नमूने हैं तो यदि मैं हूं संख्याओं के लिए इस विधि को लागू करने जा रहा है (बाइनरी नहीं) क्या हम इसे भाषण मान्यता कह सकते हैं? – udani

संबंधित मुद्दे