Meezo ML نشر 30 يونيو 2021 أرسل تقرير نشر 30 يونيو 2021 (معدل) أقوم بتدريب موديل في keras على minst ولكن يظهر لدي الخطأ التالي خلال تنفيذ الكود: from keras.models import Sequential from keras import layers import tensorflow as tf from tensorflow.keras.datasets import mnist (X_train,y_train),(X_test,y_test)=mnist.load_data() print(X_train.shape,y_train.shape) model = models.Sequential() model.add(layers.Dense(512, activation='relu', input_shape=(60000,28, 28))) model.add(layers.Dense(1, activation='softmax')) model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy']) model.fit(X_train,y_train) (60000, 28, 28) (60000,) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-41-23ec20f8146c> in <module>() 11 model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy']) 12 ---> 13 model.fit(X_train,y_train) 9 frames /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, kwargs) 984 except Exception as e: # pylint:disable=broad-except 985 if hasattr(e, "ag_error_metadata"): --> 986 raise e.ag_error_metadata.to_exception(e) 987 else: 988 raise ValueError: in user code: /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:855 train_function * return step_function(self, iterator) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:845 step_function outputs = model.distribute_strategy.run(run_step, args=(data,)) /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:1285 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:2833 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:3608 _call_for_each_replica return fn(*args, kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:838 run_step outputs = model.train_step(data) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:797 train_step y, y_pred, sample_weight, regularization_losses=self.losses) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/compile_utils.py:204 call loss_value = loss_obj(y_t, y_p, sample_weight=sw) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:155 call losses = call_fn(y_true, y_pred) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:259 call ** return ag_fn(y_true, y_pred, **self._fn_kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:206 wrapper return target(*args, **kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:1644 categorical_crossentropy y_true, y_pred, from_logits=from_logits) /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:206 wrapper return target(*args, **kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/backend.py:4862 categorical_crossentropy target.shape.assert_is_compatible_with(output.shape) /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/tensor_shape.py:1161 assert_is_compatible_with raise ValueError("Shapes %s and %s are incompatible" % (self, other)) ValueError: Shapes (32, 1) and (32, 28) are incompatible ما الحل؟ تم التعديل في 30 يونيو 2021 بواسطة Meezo ML اقتباس
3 Ali Haidar Ahmad نشر 30 يونيو 2021 أرسل تقرير نشر 30 يونيو 2021 (معدل) في Keras، طبقة الإدخال هي ال input shape وهي ليست طبقة بحد ذاتها ، لكنها موتر (tensor) أو مصفوفة ترسله إلى أول طبقة مخفية. ويجب أن يكون لهذا الموتر نفس شكل بيانات التدريب الخاصة بك. فمثلاً:إذا كان لديك 20 صورة بحجم 150 × 150 بكسل في RGB (3 قنوات) ، يكون شكل بيانات الإدخال (30،50،50،3). وبالتالي فإن موتر طبقة الإدخال يجب أن يكون متطابقاً معه. كل نوع من الطبقات يتطلب إدخالًا بعدد معين من الأبعاد: Dense: تطلب (batch_size, input_size)، أو (batch_size, optional,...,optional, input_size) 2D convolutional layers: فهناك حالتان وكل منهما يتعلق بترتيب وجود وسيط القنوات. (batch_size, imageside1, imageside2, channels) أو (batch_size, channels, imageside1, imageside2) 1D convolutions: وأيضاً الطبقات المتكررة مثل RNN و LSTM تحتاج إلى (batch_size, sequence_length, features). لذا سيكون حل مشكلتك كل التالي فسببها هو طريقتك الخاطئة بتمرير الأبعاد: #Dense نقوم بإعادة تعيين الأبعاد بطريقة تناسب الدخل الذي تحتاجه الطبقة التي لديك وهي X_train = X_train.reshape((60000, 28 * 28)) X_test = X_test.reshape((10000, 28 * 28)) #وبعد ذلك تدريب البيانات الجديدة على الشبكة التالية model = models.Sequential() model.add(layers.Dense(512, activation='relu', input_shape=(28* 28,))) model.add(layers.Dense(1, activation='softmax')) model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy']) model.fit(X_train,y_train) نقوم بتحديد ال input shape في أول طبقة فقط، ثم بعد ذلك يتم استنتاجه تلقائياُ بدون التصريح عن ذلك بشكل صريح في الطبقات الأخرى. تم التعديل في 30 يونيو 2021 بواسطة Ali Haidar Ahmad 3 اقتباس
1 ريم المهدي نشر 30 يونيو 2021 أرسل تقرير نشر 30 يونيو 2021 الطريقة الأخرى لحل هذه المشكلة هي إستخدام flatten وهي عبارة الدالة المسؤولة عن تحويل 2D array للصور لمصفوفة ذات بعد واحد بدلا من بعدين بذلك تصبح 28*28 => 1*784. و تضاف flatten لأول طبقة في النموذج (كما يمكن تحديد الشكل المدخل، لكنه اتوماتيكياً يأخذ شكل العينة 2D). والان بعد إستدعاء flatten وإضافتها في أول طبقة في النموذج يصبح البرنامح كالتالي: from keras.models import Sequential from keras import layers import tensorflow as tf from keras.layers import Flatten from tensorflow.keras.datasets import mnist (X_train,y_train),(X_test,y_test)=mnist.load_data() print(X_train.shape,y_train.shape) model = models.Sequential() model.add(Flatten()) model.add(layers.Dense(512, activation='relu')) model.add(layers.Dense(1, activation='softmax')) model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy']) model.fit(X_train,y_train) 1 اقتباس
السؤال
Meezo ML
أقوم بتدريب موديل في keras على minst ولكن يظهر لدي الخطأ التالي خلال تنفيذ الكود:
ما الحل؟
تم التعديل في بواسطة Meezo ML2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.