2016-05-02 3 views
9

मुझे केरास पर आरएनएन के लिए इनपुट डेटा तैयार करने में परेशानी हो रही है।केरास: मुझे आरएनएन के लिए इनपुट डेटा कैसे तैयार करना चाहिए?

वर्तमान में, मेरी प्रशिक्षण डेटा आयाम है: (6752, 600, 13)

  • 6752: प्रशिक्षण डेटा की संख्या
  • 600: समय की संख्या कदम
  • 13: सुविधा वैक्टर का आकार (वेक्टर नाव में है)

X_train और Y_train दोनों इस आयाम में हैं।

मैं इस डेटा को केरास पर SimpleRNN में खिलाया जाना चाहता हूं। मान लीजिए कि हम चरण # 0 से चरण # 59 9 तक, समय-समय पर जा रहे हैं। मान लें कि मैं input_length = 5 का उपयोग करना चाहता हूं, जिसका अर्थ है कि मैं हाल के 5 इनपुट का उपयोग करना चाहता हूं। (उदाहरण के लिए चरण # 10, # 11, # 12, # 13, # 14 @ चरण # 14)।

मुझे X_train को दोबारा कैसे बदलना चाहिए?

यह (6752, 5, 600, 13) होना चाहिए या यह (6752, 600, 5, 13) होना चाहिए?

और Y_train किस आकार में होना चाहिए?

क्या यह (6752, 600, 13) या (6752, 1, 600, 13) या (6752, 600, 1, 13) होना चाहिए?

उत्तर

12

यदि आप केवल हालिया 5 इनपुट का उपयोग करके आउटपुट की भविष्यवाणी करना चाहते हैं, तो किसी भी प्रशिक्षण नमूने के पूर्ण 600 समय चरणों को कभी भी प्रदान करने की आवश्यकता नहीं है। मेरे सुझाव निम्न तरीके से प्रशिक्षण डेटा पास करने होगा:

   t=0 t=1 t=2 t=3 t=4 t=5 ... t=598 t=599 
sample0  |---------------------| 
sample0   |---------------------| 
sample0    |----------------- 
... 
sample0           ----| 
sample0           ----------| 
sample1  |---------------------| 
sample1   |---------------------| 
sample1    |----------------- 
.... 
.... 
sample6751          ----| 
sample6751          ----------| 

प्रशिक्षण दृश्यों की कुल संख्या

(600 - 4) * 6752 = 4024192 # (nb_timesteps - discarded_tailing_timesteps) * nb_samples 

प्रत्येक प्रशिक्षण अनुक्रम 5 समय चरणों के होते हैं करने के लिए योग होगा। प्रत्येक अनुक्रम के प्रत्येक चरण में आप फीचर वेक्टर के सभी 13 तत्वों को पार करते हैं। इसके बाद, प्रशिक्षण डेटा का आकार (4024192, 5, 13) होगा।

इस पाश अपने डेटा नयी आकृति प्रदान कर सकते हैं:

input = np.random.rand(6752,600,13) 
nb_timesteps = 5 

flag = 0 

for sample in range(input.shape[0]): 
    tmp = np.array([input[sample,i:i+nb_timesteps,:] for i in range(input.shape[1] - nb_timesteps + 1)]) 

    if flag==0: 
     new_input = tmp 
     flag = 1 

    else: 
     new_input = np.concatenate((new_input,tmp)) 
+1

बहुत बहुत @Lorrit, यही कारण है कि बहुत मदद की धन्यवाद! अब मेरा मॉडल चल रहा है! – totuta

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