ধরা যাক আপনার কাছে সারি এবং 700 কলামগুলির সাথে টাইম-সিরিজ ডেটা রয়েছে যা আপনি কেরাসের একটি স্তরকে খাওয়াতে চান । আপনি আরএনএনকে এটি খাওয়ানোর আগে আপনার পূর্ববর্তী ডেটাটি একটি 3D টেনসারে পুনরায় আকার দেওয়া দরকার। সুতরাং এটি একটি এন × 700 × 1 হয়ে যায় ।এন700SimpleRNN(200, return_sequence=True)
এন। 700 × 1
চিত্রটি https://colah.github.io/posts/2015-08- থেকে ব্যাখ্যা নেওয়া হয়েছে- LSTMs
আরএনএন-এ, আপনার কলামগুলি ("700 কলাম") আরএনএন-এর টাইমস্টেপ। আপনার ডেটা থেকে প্রক্রিয়া করা হয় । আরএনএনকে ডেটা খাওয়ানোর পরে, এখন এটির 700 আউটপুট রয়েছে যা এইচ 1 থেকে এইচ 700 , এইচ 1 থেকে এইচ 200 নয়t = 1 t o 700 জ1জ700জ1জ200 । মনে রাখবেন যে এখন আপনার ডেটার আকারটি যা নমুনা (সারি) এক্স টাইমস্টেপস (কলাম) এক্স চ্যানেল ।এন। 700 × 200
এবং তারপর, যখন আপনি একটি আবেদন TimeDistributedDense
, আপনি একটি আবেদন করছি Dense
স্তর প্রতিটি timestep উপর, যার মানে আপনি একটি আবেদন করছি Dense
প্রতিটি স্তর , এইচ 2 , ..., জ টি যথাক্রমে। যার অর্থ: আসলে আপনি এর প্রতিটি চ্যানেলে সম্পূর্ণরূপে সংযুক্ত অপারেশন প্রয়োগ করছেন ("200" এক) যথাক্রমে, h 1 থেকে h 700 পর্যন্ত । 1 ম " 1 × 1 × 200 "জ1জ2জটিজ1জ7001 × 1 × 200 " 700th "পর্যন্ত "।1 × 1 × 200
কেন আমরা এই করছেন? কারণ আপনি আরএনএন আউটপুট সমতল করতে চান না।
আরএনএন আউটপুট সমতল করা হচ্ছে না কেন? কারণ আপনি প্রতিটি টাইমস্টেপ মান পৃথক রাখতে চান।
কেন প্রতিটি টাইমস্টেপ মান পৃথক রাখা? কারণ:
- আপনি কেবল মানগুলি তার নিজস্ব টাইমস্টেপের মধ্যে ইন্টারেক্ট করতে চান
- আপনি বিভিন্ন টাইমস্টেপ এবং চ্যানেলগুলির মধ্যে এলোমেলো ইন্টারঅ্যাকশন করতে চান না।