• 0

الفرق بين One-to-one و One-to-many و Many-to-one و Many-to-many في LSTMs في كيراس Keras

أحاول فهم 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))

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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))

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن