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

السؤال

نشر

قمت ببناء نموذج  multilayer perceptron وهذه هي طبقاتي:

____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to
====================================================================================================
dense_1 (Dense)                  (None, 20)            4020        dense_input_1[0][0]
____________________________________________________________________________________________________
dense_2 (Dense)                  (None, 2)             42          dense_1[0][0]
====================================================================================================

لكن يظهر لي الخطأ التالي، عندما أحاول تدريب النموذج:

model.fit(data,label,epochs=70)
-------------------------------------------------------
Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 arrays but instead got the following list of 10000 arrays:

علماً أنني ال  input_shape=(200,) وأبضاُ ال data عبارة عن list من العينات وكل عينة عبارة عن 200 عنصر.
 

Recommended Posts

  • 2
نشر

إن الطبقات التي نقوم باستخدامها في keras و tensorflow هي طبقات تتعامل مع بنية بيانات نسميها tensor (بنية خاصة أكثر كفاءة من بنى المصفوفات العادية)، حيث أن هذه الطبقات صممت بحيث يمكنها أن تستقبل بيانات من نوع numpy.array ثم تحولها تلقائياً إلى tensor. لكن هذه الطبقات لاتتعامل مع القوائم وأنت تمرر لها قائمة وهذا خطأ شائع، لذا يجب أن تحول بياناتك إلى مصفوفة نمباي أولاً وستحل مشكلتك:

import numpy
data = numpy.array(data)
label = numpy.array(label)

 

  • 2
نشر

الخطأ ظهر نتيجة لتمرير قائمة من القيم (200 في هذه الحالة) إلى دالة التدريب و التي يجب أن تستقبل مدخل واحد يحتوي على 200 صف، لذلك يجب أن تحول قوائم المدخلات إلى مصفوفات، يمكنك ذلك عن طريق إستخدام الدالة numpy.array أو عن طريق numpy.asarray():

import numpy
data = numpy.array(data)
label = numpy.array(label)

أو بالطريقة الثانية:

import numpy
data = numpy.asarray(data)
label = numpy.asarray(label)

الفرق بين الطريقتين هو أن الأولى تنشئ نسخة من القائمة و تحولها إلى مصفوفة بينما في الطريقة الثانية تتحول القائمة الأصل إلى مصفوفة.

لاحظ أنه يمكنك تنفيذ التحويل أيضاً داخل دالة التدريب كالتالي:

import numpy
model.fit(numpy.asarray(data),numpy.asarray(label),epochs = 70)

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...