اذهب إلى المحتوى

السؤال

نشر

أحاول فهم LSTMs وكيفية بنائها باستخدام Keras. اكتشفت أن هناك 4 أوضاع لتشغيل RNN  وهي One-to-one و One-to-many و Many-to-one و Many-to-many، لذا هل من الممكن أن يظهر لي أحدكم كيفية تمثيل ذلك في كيراس وتنسرفلو . مثلاً بالشكل التالي:

model = Sequential()
model.add(LSTM(64, input_shape=(timesteps,dim)))
model.add(Dense(1))

Recommended Posts

  • 1
نشر

في حالة النماذج من الشكل One-to-one يكون لدينا دخل واحد و خرج واحد ولايكون هناك معالجة للتسلسلات لذا يمكنك استخدام طبقة fully-connected أي Dense layer:

# One-to-one
mymodel.add(Dense(number_of_cells, input_shape=your_input_shape))

أما في حالة many to many فهنا يكون لدينا حالتين إما أن يكون عدد المخرجات = عدد المدخلات وهذا من السهل القيام به كما في المثال في الأسفل:

# Many-to-many
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, dim), return_sequences=True))

أو أن يكون عدد المخرجات لايساوي عدد المدخلات وهذا صعب جداً القيام به من خلال كيراس، مثلاً:

model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
model.add(Lambda(lambda x: x[:, -N:, :]))
#هو عدد الخطوات الأخيرة التي تريد تغطيتها N حيث أن

أما Many-to-one فهو عندما يكون لدينا عدة مدخلات وخرج واحد لها مثال:

# Many-to-one
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps,dim)))

أما one-to-many فيكون لدينا دخل واحد فقط وعدة مخرجات له، وهي حالة غير مدعومة جيداً في كيراس:

# One-to-many
mymodel.add(RepeatVector(number_of_times, input_shape=your_input_shape))
mymodel.add(LSTM(number_of_headen_state, return_sequences=True))

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...