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

ظهور الخطأ التالي TypeError: 'int' object is not iterable أثناء محاولة تدريب شبكة عصبية

Meezo ML

السؤال

أقوم بتدريب شبكة عصبونية للتعرف على الأرقام mnist ولكنها لا تعمل على google colab

import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense , Activation, Dropout
from keras.models import Sequential
from keras.utils.np_utils import to_categorical
from keras.datasets import mnist
(x_train, y_train),(x_vaild, y_vaild) = mnist.load_data()
y_train = to_categorical(y_train)
y_vaild = to_categorical(y_vaild)
image_size = x_train.shape[1]
input_size = image_size * image_size
x_train = np.reshape(x_train, [-1, input_size])
x_train = x_train.astype('float32') / 255
x_test = np.reshape(x_test, [-1, input_size])
x_test = x_test.astype('float32') / 255
batch_size = 32
hidden_units = 256
model = Sequential()
model.add(Dense(hidden_units, input_dim=input_size))
model.add(Activation('relu'))
model.add(Dropout(0,45))
model.add(Dense(hidden_units))
model.add(Activation('relu'))
model.add(Dropout(0,45))
model.add(Dense(10))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5,validation_data=[x_vaild, y_vaild], batch_size=batch_size))
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-10-51503a456d4c> in <module>()
     34 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
     35 
---> 36 model.fit(x_train, y_train, epochs=5,validation_data=[x_vaild, y_vaild], batch_size=batch_size)

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

TypeError: in user code:

    /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:830 train_function  *
        return step_function(self, iterator)
    /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:813 run_step  *
        outputs = model.train_step(data)
    /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:770 train_step  *
        y_pred = self(x, training=True)
    /usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py:1006 __call__  *
        outputs = call_fn(inputs, *args, **kwargs)
    /usr/local/lib/python3.7/dist-packages/keras/engine/sequential.py:375 call  *
        return super(Sequential, self).call(inputs, training=training, mask=mask)
    /usr/local/lib/python3.7/dist-packages/keras/engine/functional.py:416 call  *
        inputs, training=training, mask=mask)
    /usr/local/lib/python3.7/dist-packages/keras/engine/functional.py:551 _run_internal_graph  *
        outputs = node.layer(*args, **kwargs)
    /usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py:1006 __call__  *
        outputs = call_fn(inputs, *args, **kwargs)
    /usr/local/lib/python3.7/dist-packages/keras/layers/core.py:205 dropped_inputs  *
        inputs,
    /usr/local/lib/python3.7/dist-packages/keras/utils/control_flow_util.py:107 smart_cond  *
        pred, true_fn=true_fn, false_fn=false_fn, name=name)
    /usr/local/lib/python3.7/dist-packages/keras/layers/core.py:195 _get_noise_shape  *
        for i, value in enumerate(self.noise_shape):
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/autograph/operators/py_builtins.py:400 enumerate_  
        return _py_enumerate(s, start)
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/autograph/operators/py_builtins.py:408 _py_enumerate
        return enumerate(s, start)

    TypeError: 'int' object is not iterable

 

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

Recommended Posts

  • 2

يوجد خطأن الأول  في dropout هو فقط ضع مكان السطر

model.add(Dropout(0,45))

السطر التالي:

model.add(Dropout(0.45))

والثاني أنه في مجموعة التحقق validation_data في السطر التالي:

model.fit(x_train, y_train, epochs=5,validation_data=[x_vaild, y_vaild], batch_size=batch_size)

 يأخذ tuple و ليس مصفوفة أي يصبح السطر هكذا:

model.fit(x_train, y_train, epochs=5,validation_data=(x_vaild, y_vaild), batch_size=batch_size)
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بالإضافة للأخطاء التي قام بتحديدها @Ali Haidar Ahmad هنالك ثلاث أخطاء أخرى في البرنامج:

  1. File "<ipython-input-9-12a8c3b757d3>", line 29
        model.fit(x_train, y_train, epochs=5,validation_data=[x_vaild, y_vaild], batch_size=batch_size))
                                                                                                       ^
    SyntaxError: invalid syntax

    والذي يظهر نتيجة للقوس الزائد بأخر سطر في البرنامج.

  2.  ValueError: Input 0 of layer sequential_4 is incompatible with the layer: expected axis -1 of input shape to have value 784 but received input with shape (None, 28, 28)

    والذي يظهر نتيجة للخلط بين إستخدام x_vaild و x_test في مسألة تحويل شكل البيانات في الأسطر 13-16.

  3. عند تعديل الخطأ السابق و تحويل كل x_valid , y_valid إلى x_test, y_test يظهر الخطأ أدناه:
     

    ValueError: Input 0 of layer sequential_5 is incompatible with the layer: expected axis -1 of input shape to have value 784 but received input with shape (None, 28, 28)

    والذي يكون نتيجة لإستخدام x_vaild, y_vaild للتحقق و هما متغيران يأخذان الشكل المخزن في الذاكرة قبل التغيير لقيم x_test, y_test في هذه الحالة يمكننا إستخدام x_train, y_train لعملية التحقق و يصبح شكل البرنامج النهائي كالتالي:

    import numpy as np
    import pandas as pd
    from keras.models import Sequential
    from keras.layers import Dense , Activation, Dropout
    from keras.models import Sequential
    from keras.utils.np_utils import to_categorical
    from keras.datasets import mnist
    (x_train, y_train),(x_test, y_test) = mnist.load_data()
    y_train = to_categorical(y_train)
    y_vaild = to_categorical(y_vaild)
    image_size = x_train.shape[1]
    input_size = image_size * image_size
    x_train = np.reshape(x_train, [-1, input_size])
    x_train = x_train.astype('float32') / 255
    x_test = np.reshape(x_test, [-1, input_size])
    x_test = x_test.astype('float32') / 255
    batch_size = 32
    hidden_units = 256
    model = Sequential()
    model.add(Dense(hidden_units, input_dim=input_size))
    model.add(Activation('relu'))
    model.add(Dropout(0.45))
    model.add(Dense(hidden_units))
    model.add(Activation('relu'))
    model.add(Dropout(0.45))
    model.add(Dense(10))
    model.add(Activation('softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    model.fit(x_train, y_train, epochs=5,validation_data=(x_train, y_train), batch_size=batch_size)




     

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...