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

السؤال

نشر

السلام عليكم 

عند تدريب شبكه عصبيه CNN بيحصل الخطاء ده اثناء التدريب النموذج 

InvalidArgumentError                      Traceback (most recent call last)
/tmp/ipykernel_36/2234119796.py in <cell line: 0>()
----> 1 history = keras_models.fit(train_ds,validation_data=val_ds,epochs=20)

/usr/local/lib/python3.11/dist-packages/keras/src/utils/traceback_utils.py in error_handler(*args, **kwargs)
    120             # To get the full stack trace, call:
    121             # `keras.config.disable_traceback_filtering()`
--> 122             raise e.with_traceback(filtered_tb) from None
    123         finally:
    124             del filtered_tb

/usr/local/lib/python3.11/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     57       e.message += " name: " + name
     58     raise core._status_to_exception(e) from None
---> 59   except TypeError as e:
     60     keras_symbolic_tensors = [x for x in inputs if _is_keras_symbolic_tensor(x)]
     61     if keras_symbolic_tensors:

InvalidArgumentError: Graph execution error:

Detected at node decode_image/DecodeImage defined at (most recent call last):
<stack traces unavailable>
Detected at node decode_image/DecodeImage defined at (most recent call last):
<stack traces unavailable>
2 root error(s) found.
  (0) INVALID_ARGUMENT:  Input size should match (header_size + row_size * abs_height) but they differ by 2
	 [[{{node decode_image/DecodeImage}}]]
	 [[IteratorGetNext]]
	 [[IteratorGetNext/_4]]
  (1) INVALID_ARGUMENT:  Input size should match (header_size + row_size * abs_height) but they differ by 2
	 [[{{node decode_image/DecodeImage}}]]
	 [[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_multi_step_on_iterator_13769]

مع العلم انا بستخدم الداله دي في تحميل البيانات 

train_ds = tf.keras.utils.image_dataset_from_directory(
    '/kaggle/input/dog-and-cat-classification-dataset/PetImages',
    image_size=(128, 128),
    batch_size=32,
    labels="inferred",
    label_mode="int",
    validation_split=0.2,
    subset="training",
    seed=123,
)

 

Recommended Posts

  • 0
نشر

لديك مشكلة في الملفات، فالدالة image_dataset_from_directory تقرأ كل ملف في المجلد، ولو تم قراءة ملف تالف، يتوقف التدريب بأكمله.

عليك المرور على جميع الصور في مجلدي Cat و Dog وحذف أي ملف لا يمكن فتحه كصورة صالحة، ومتاح ذلك سهولة من خلال مكتبة Pillow، عن طريق السكريبت التالي، قم بتنفيذه في خلية منفصلة قبل الكود الذي يقوم بإنشاء train_ds و val_ds:

import os
import PIL
from PIL import Image
from pathlib import Path

cat_path = Path("/kaggle/input/dog-and-cat-classification-dataset/PetImages/Cat")
dog_path = Path("/kaggle/input/dog-and-cat-classification-dataset/PetImages/Dog")

image_extensions = [".png", ".jpg", ".jpeg"]  
img_paths = [cat_path, dog_path]

for path in img_paths:
    print(f"Checking directory: {path}")
    for filepath in path.glob("*"):
        if filepath.suffix.lower() in image_extensions:
            try:
                img = Image.open(filepath)
                img.verify()
            except (IOError, SyntaxError, PIL.UnidentifiedImageError) as e:
                print(f"Deleting corrupt image file: {filepath}")
                try:
                    os.remove(filepath)
                except Exception as remove_error:
                    print(f"Could not delete file: {filepath}, Error: {remove_error}")

بالطبع عليك تعديل مسار cat_path وdog_path للمسار الصحيح لديك في بيئة Kaggle

  • 0
نشر
بتاريخ 6 ساعة قال Mustafa Suleiman:

لديك مشكلة في الملفات، فالدالة image_dataset_from_directory تقرأ كل ملف في المجلد، ولو تم قراءة ملف تالف، يتوقف التدريب بأكمله.

عليك المرور على جميع الصور في مجلدي Cat و Dog وحذف أي ملف لا يمكن فتحه كصورة صالحة، ومتاح ذلك سهولة من خلال مكتبة Pillow، عن طريق السكريبت التالي، قم بتنفيذه في خلية منفصلة قبل الكود الذي يقوم بإنشاء train_ds و val_ds:

import os
import PIL
from PIL import Image
from pathlib import Path

cat_path = Path("/kaggle/input/dog-and-cat-classification-dataset/PetImages/Cat")
dog_path = Path("/kaggle/input/dog-and-cat-classification-dataset/PetImages/Dog")

image_extensions = [".png", ".jpg", ".jpeg"]  
img_paths = [cat_path, dog_path]

for path in img_paths:
    print(f"Checking directory: {path}")
    for filepath in path.glob("*"):
        if filepath.suffix.lower() in image_extensions:
            try:
                img = Image.open(filepath)
                img.verify()
            except (IOError, SyntaxError, PIL.UnidentifiedImageError) as e:
                print(f"Deleting corrupt image file: {filepath}")
                try:
                    os.remove(filepath)
                except Exception as remove_error:
                    print(f"Could not delete file: {filepath}, Error: {remove_error}")

بالطبع عليك تعديل مسار cat_path وdog_path للمسار الصحيح لديك في بيئة Kaggle

انا عملت الكود ده وبعد ما عملت Run الكود اشتغل والنتجيه كانت كل تمام يعني مافيش صور تافه ازي مش عارف مع ان بعد كده بدرب النموذج طهر بردون نفس الخطاء ؟

  • 0
نشر

هو ده حضرتك

Epoch 1/10
161/625 ━━━━━━━━━━━━━━━━━━━━ 8s 19ms/step - accuracy: 0.5074 - loss: 7.7238
Corrupt JPEG data: 2226 extraneous bytes before marker 0xd9
264/625 ━━━━━━━━━━━━━━━━━━━━ 6s 18ms/step - accuracy: 0.5070 - loss: 5.4437
Corrupt JPEG data: 65 extraneous bytes before marker 0xd9
Corrupt JPEG data: 239 extraneous bytes before marker 0xd9
268/625 ━━━━━━━━━━━━━━━━━━━━ 6s 18ms/step - accuracy: 0.5070 - loss: 5.3865
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
/tmp/ipykernel_36/945077657.py in <cell line: 0>()
----> 1 history = keras_models.fit(
      2     train_ds,
      3     validation_data=val_ds,
      4     epochs=10,
      5     callbacks=[tf.keras.callbacks.EarlyStopping(

/usr/local/lib/python3.11/dist-packages/keras/src/utils/traceback_utils.py in error_handler(*args, **kwargs)
    120             # To get the full stack trace, call:
    121             # `keras.config.disable_traceback_filtering()`
--> 122             raise e.with_traceback(filtered_tb) from None
    123         finally:
    124             del filtered_tb

/usr/local/lib/python3.11/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     57       e.message += " name: " + name
     58     raise core._status_to_exception(e) from None
---> 59   except TypeError as e:
     60     keras_symbolic_tensors = [x for x in inputs if _is_keras_symbolic_tensor(x)]
     61     if keras_symbolic_tensors:

InvalidArgumentError: Graph execution error:

Detected at node decode_image/DecodeImage defined at (most recent call last):
<stack traces unavailable>
Detected at node decode_image/DecodeImage defined at (most recent call last):
<stack traces unavailable>
2 root error(s) found.
  (0) INVALID_ARGUMENT:  Input size should match (header_size + row_size * abs_height) but they differ by 2
	 [[{{node decode_image/DecodeImage}}]]
	 [[IteratorGetNext]]
	 [[IteratorGetNext/_2]]
  (1) INVALID_ARGUMENT:  Input size should match (header_size + row_size * abs_height) but they differ by 2
	 [[{{node decode_image/DecodeImage}}]]
	 [[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_multi_step_on_iterator_39708]

الخطاء ده بيحصل اثناء تدريب الشبكه العصبه CNN

  • 0
نشر
بتاريخ 3 ساعة قال Ali Ahmed55:

هو ده حضرتك

Epoch 1/10
161/625 ━━━━━━━━━━━━━━━━━━━━ 8s 19ms/step - accuracy: 0.5074 - loss: 7.7238
Corrupt JPEG data: 2226 extraneous bytes before marker 0xd9
264/625 ━━━━━━━━━━━━━━━━━━━━ 6s 18ms/step - accuracy: 0.5070 - loss: 5.4437
Corrupt JPEG data: 65 extraneous bytes before marker 0xd9
Corrupt JPEG data: 239 extraneous bytes before marker 0xd9
268/625 ━━━━━━━━━━━━━━━━━━━━ 6s 18ms/step - accuracy: 0.5070 - loss: 5.3865
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
/tmp/ipykernel_36/945077657.py in <cell line: 0>()
----> 1 history = keras_models.fit(
      2     train_ds,
      3     validation_data=val_ds,
      4     epochs=10,
      5     callbacks=[tf.keras.callbacks.EarlyStopping(

/usr/local/lib/python3.11/dist-packages/keras/src/utils/traceback_utils.py in error_handler(*args, **kwargs)
    120             # To get the full stack trace, call:
    121             # `keras.config.disable_traceback_filtering()`
--> 122             raise e.with_traceback(filtered_tb) from None
    123         finally:
    124             del filtered_tb

/usr/local/lib/python3.11/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     57       e.message += " name: " + name
     58     raise core._status_to_exception(e) from None
---> 59   except TypeError as e:
     60     keras_symbolic_tensors = [x for x in inputs if _is_keras_symbolic_tensor(x)]
     61     if keras_symbolic_tensors:

InvalidArgumentError: Graph execution error:

Detected at node decode_image/DecodeImage defined at (most recent call last):
<stack traces unavailable>
Detected at node decode_image/DecodeImage defined at (most recent call last):
<stack traces unavailable>
2 root error(s) found.
  (0) INVALID_ARGUMENT:  Input size should match (header_size + row_size * abs_height) but they differ by 2
	 [[{{node decode_image/DecodeImage}}]]
	 [[IteratorGetNext]]
	 [[IteratorGetNext/_2]]
  (1) INVALID_ARGUMENT:  Input size should match (header_size + row_size * abs_height) but they differ by 2
	 [[{{node decode_image/DecodeImage}}]]
	 [[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_multi_step_on_iterator_39708]

الخطاء ده بيحصل اثناء تدريب الشبكه العصبه CNN

السلام عليكم ورحمة الله تعالى وبركاته،

أولا فإنّ ال image_dataset_from_directory لا تتجاهل الصور التالفة تلقائيا يمكنك رؤية ذلك في رسالة التحذير:

Corrupt JPEG data

والتي تشير إلى وجود صور JPEG تالفة في ال dataset ثم يحدث الخطأ الكامل InvalidArgumentError عندما تواجه TensorFlow صورة تالفة لا يمكن فك تشفيرها نهائيا وهنا المشكلة أن TensorFlow يحاول معالجة جميع الملفات في المجلد دون تصفية، وعندما يصل لصورة تالفة مثل الصورة التي تسبب الخطأ:

Input size should match header_size

يتوقف التدريب تماما والحل هو تنظيف البيانات مسبقا عبر إزالة الصور التالفة يدويا أو برمجيا أو استخدام كود مخصص لإنشاء dataset يتجاهل الصور التالفة باستخدام tf.data.Dataset.from_generator مع معالجة الأخطاء أو إضافة tf.data.AUTOTUNE مع dataset.map() و try-except للتعامل مع هذه الحالات.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...