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

Chollet ML

الأعضاء
  • المساهمات

    36
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Chollet ML

  1. عند التعامل مع TensorFlow فإنه يقوم بشكل افتراضي بتخصيص كامل طاقة ال GPU المتاحة، حتى لو كانت الشبكة العصبية صغيرة جداً، فمثلاً أنا لدي GPU ب 8 جيجابايت، لكن لا أريد أن يتم تخصيصها كاملةً لمهمة واحدة (تدريب شبكة واحدة) هل أستطيع تخصيص حجم معين فقط لمهمة معينة؟
     

  2. استخدم تنسرفلو لتدريب نموذج لكن لم أفهم بدقة ماذا تعني ال epoch، من المعروف أن ال iteration هو عملية forward و backward على البيانات (مرور على البيانات ثم تحديث قيم الأوزان في الشبكة)، لكن ماهو ال epoch ؟ ولماذا لانستخدم مصطلح ال iteration؟

    Epoch 1/5
    105/938 [==>...........................] - ETA: 51s - loss: 0.6753 - acc: 0.7948

     

    • أعجبني 1
  3. في التوثيق الخاص بالدالة softmax في تنسرفلو يتم تعريف الدالة بالشكل التالي :

    tf.nn.softmax(
        logits, axis=None, name=None
    )
    # أيضاً هناك دالة أخرى معرفة بالشكل التالي
    tf.nn.softmax_cross_entropy_with_logits(logits, labels, name=None)

    ما المقصود بال logits وما الفرق بين الدالتين السابقتين؟

    • أعجبني 1
  4. أثناء عملي على تنسرفلو  tensorflow-1.4.0 قمت ببناء الكود التالي، لكن يظهر لي هذا التحذير، ما المشكلة؟

    import tensorflow
    tens = tensorflow.constant('Hello, TensorFlow!')
    sess = tensorflow.Session()
    sess.run(tens)
    'Hello, TensorFlow!'
    sess.run(tensorflow.constant(4) +tensorflow.constant(5))
    # 9
    sess.close()
    ----------------------------------
    2017-11-02 01:56:21.698935: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2

     

  5. قمت ببناء النموذج التالي في كيراس لكن يظهر لي الخطأ التالي: 

    from keras.datasets import reuters
    import keras
    import tensorflow as tf
    (train_data, train_labels), (test_data, test_labels) = reuters.load_data(
    num_words=10000)
    import numpy as np
    def vectorize_sequences(sequences, dimension=10000):
      results = np.zeros((len(sequences), dimension))
      for i, sequence in enumerate(sequences):
       results[i, sequence] = 1.
      return results
    x_train = vectorize_sequences(train_data)
    x_test = vectorize_sequences(test_data)
    from keras.utils.np_utils import to_categorical
    one_hot_train_labels = to_categorical(train_labels)
    one_hot_test_labels = to_categorical(test_labels)
    x_val = x_train[:1000]
    partial_x_train = x_train[1000:]
    # هنا
    y_val = one_hot_train_labels[:1000]
    partial_y_train = one_hot_train_labels[1000:]
    # الآن:
    partial_x_train.shape
    # (7982, 10000)
    partial_y_train.shape
    # (7982, 46)
    from keras import models
    from keras import layers
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu', input_shape=(1000,)))
    model.add(keras.layers.LayerNormalization())
    model.add(layers.Dense(64, activation='relu'))
    model.add(keras.layers.LayerNormalization())
    model.add(layers.Dense(46, activation='softmax'))
    model.compile(optimizer='rmsprop',
    loss='categorical_crossentropy',
    metrics=['CategoricalAccuracy'])
    history = model.fit(tf.convert_to_tensor(partial_x_train, np.float32),
    partial_y_train,
    epochs=6,
    batch_size=512,
    validation_data=(x_val, y_val))
    ----------------------------------------------------------
     ValueError: Input 0 of layer sequential_7 is incompatible with the layer: expected axis -1 of input shape to have value 1000 but received input with shape (None, 10000)

     

     

  6. قمت ببناء نموذج لتصنيف الأخبار على بيانات راوترز، لكن يظهر لي الخطأ التالي عند محاولة تدريب نموذجي؟

    from keras.datasets import reuters
    import keras
    import tensorflow as tf
    (train_data, train_labels), (test_data, test_labels) = reuters.load_data(
    num_words=10000)
    import numpy as np
    def vectorize_sequences(sequences, dimension=10000):
      results = np.zeros((len(sequences), dimension))
      for i, sequence in enumerate(sequences):
       results[i, sequence] = 1.
      return results
    x_train = vectorize_sequences(train_data)
    x_test = vectorize_sequences(test_data)
    from keras.utils.np_utils import to_categorical
    one_hot_train_labels = to_categorical(train_labels)
    one_hot_test_labels = to_categorical(test_labels)
    x_val = x_train[:1000]
    partial_x_train = x_train[1000:]
    
    from keras import models
    from keras import layers
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu', input_shape=(10000,)))
    model.add(keras.layers.LayerNormalization())
    model.add(layers.Dense(64, activation='relu'))
    model.add(keras.layers.LayerNormalization())
    model.add(layers.Dense(46, activation='softmax'))
    model.compile(optimizer='rmsprop',
    loss='categorical_crossentropy',
    metrics=['CategoricalAccuracy'])
    #fit تدريب النموذج من خلال الدالة 
    history = model.fit(tf.convert_to_tensor(partial_x_train, np.float32),
    one_hot_train_labels,
    epochs=6,
    batch_size=512,
    validation_data=(x_val, one_hot_test_labels),max_queue_size=10)
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-2-b9508248cdf2> in <module>()
         34 epochs=6,
         35 batch_size=512,
    ---> 36 validation_data=(x_val, one_hot_test_labels),max_queue_size=10)
    4 frames
    /usr/local/lib/python3.7/dist-packages/keras/engine/data_adapter.py in _check_data_cardinality(data)
       1647           label, ", ".join(str(i.shape[0]) for i in tf.nest.flatten(single_data)))
       1648     msg += "Make sure all arrays contain the same number of samples."
    -> 1649     raise ValueError(msg)
       1650 
       1651 
    ValueError: Data cardinality is ambiguous:
      x sizes: 7982
      y sizes: 8982
    Make sure all arrays contain the same number of samples.

    ما المشكلة وما السبب؟ وما هو الحل؟

  7.  ما الفرق بين تمرير دالة التنشيط كوسيط كما في المثال التالي :

    from tensorflow.keras import layers
    model.add(layers.Dense(64, activation='relu'))

    أو استخدامها كطبقة Activation مستقلة:

    from tensorflow.keras import layers
    from tensorflow.keras import activations
    model.add(layers.Dense(64))
    model.add(layers.Activation(activations.relu))


     

    • أعجبني 1
  8. أقوم ببناء نموذج لتصنيف الأرقام المكتوبة بخط اليد اعتماداً على مجموعة بيانات MINST لكن لا أعلم سبب ظهور الخطأ التالي عندما أحاول تدريب النموذج:

    from tensorflow.keras.layers import Conv2D,MaxPooling2D
    from keras.datasets import mnist
    from tensorflow.keras.models import Sequential
    import keras
    from keras.layers import Dense, Dropout, Flatten
    model = Sequential()
    model.add(Conv2D(30,(3,3),padding="valid",kernel_initializer="glorot_uniform", activation="tanh", input_shape=(28, 28, 1) ))
    model.add(Conv2D(30,(3,3), activation="tanh"))
    model.add(MaxPooling2D((2,2))
    model.add(Dropout(0.4))
    model.add(Flatten())
    model.add(Dense(100, activation='relu'))
    model.add(Dropout(0.4))
    model.add(Dense(10, activation='softmax'))
    -----------------------------------------------------------------------------------------------
    TypeError: The added layer must be an instance of class Layer. Found: <keras.layers.core.Dropout object at 0x000001622999A5F8>

     

    • أعجبني 1
  9. ما هو الفرق بين val_acc و acc، فأثناء قراءتي لإحدى النماذج رأيتهم لكن لم أفهم سبب وجود val_acc؟

    Epoch 5/200
    727722/727722 [==============================] - 50s - loss: 0.3167 - acc: 0.9557 - val_loss: 0.5473 - val_acc: 0.7455
    Epoch 6/200
    727722/727722 [==============================] - 50s - loss: 0.3152 - acc: 0.9573 - val_loss: 0.5497 - val_acc: 0.7404
    Epoch 6/200
    727722/727722 [==============================] - 60s - loss: 0.3136 - acc: 0.9581 - val_loss: 0.6518 - val_acc: 0.7001

     

  10. أتتبع دورة تعليمية، في كيراس، لكن عند محاولتي تطبيق ذلك ظهر لي الخطأ التالي:

    from keras.layers import Conv2D, MaxPooling2D,Dense, Dropout, Activation, Flatten
    from keras.models import Sequential
    from keras.preprocessing.image import ImageDataGenerator
    ---------------------------------------------------------------------------
    ImportError                               Traceback (most recent call last)
    <ipython-input-13-3a12c6f32fcf> in <module>()
    ----> 1 from keras.layers import Conv2D, MaxPooling2D,Dense, Dropout, Activation, Flatten
    ImportError: cannot import name Conv2D

     

    • أعجبني 1
  11. قمت بتثبيت بيئة أناكوندا Anaconda 4.4.1 وأحاول تنفيذ نموذج في كيراس على جوبيتر لكن يظهر لي الخطأ التالي عند محاولة استيرادها:

    import keras
    -----------------------------------------------------
    Traceback (most recent call last):
    File "<ipython-input-3-c74e2bd4ca71>", line 1, in <module>
    ImportError: No module named 'keras'

     

    • أعجبني 1
  12. قمت ببناء النموذج التالي لتصنيف حالة السائق (مستيقظ/ نائم)، حيث أريد تدريبه على صور أبعادها 100*100، لكن عندما أحاول تدريبه يظهر لي الخطأ التالي:

    img = cv2.imread(r"C:\Users\Windows.10\Desktop\Safedrive\safe\train\ClosedFace\closed_eye_0509.jpg_face_1.jpg")
    print(img.shape)
    # (100, 100, 3)
    # dimensions of our images.
    img_width, img_height = 100, 100
    train_data_dir = r'C:\Users\Windows.10\Desktop\Safedrive\safe\train'
    validation_data_dir = r'C:\Users\Windows.10\Desktop\Safedrive\safe\val'
    batch_size=16
    train_datagen = ImageDataGenerator(
        rescale=1. / 255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)
    
    train_generator = train_datagen.flow_from_directory(
        train_data_dir,
        target_size=(img_width, img_height),
        batch_size=batch_size,
        class_mode='binary')
    # validation data
    val_datagen = ImageDataGenerator(rescale=1. / 255)
    validation_generator = val_datagen.flow_from_directory(
        validation_data_dir,
        target_size=(img_width, img_height),
        batch_size=batch_size,
        class_mode='binary')
    print(train_generator.class_indices)
    from keras.layers import BatchNormalization
    def Model():
        #Instantiation
        model = Sequential()
        #1st Convolutional Layer
        model.add(Conv2D(64, (3, 3), input_shape=(3,100,100)))
        model.add(Activation('relu'))
        model.add(MaxPooling2D(pool_size=(2, 2)))
        #2nd Convolutional Layer
        model.add(Conv2D(64, (3, 3)))
        model.add(Activation('relu'))
        model.add(MaxPooling2D(pool_size=(2, 2)))
        #3rd Convolutional Layer
        model.add(Conv2D(128, (3, 3)))
        model.add(Activation('relu'))
        model.add(MaxPooling2D(pool_size=(2, 2)))
        #Passing it to a Fully Connected layer
        model.add(Flatten())
        # 1st Fully Connected Layer
        model.add(Dense(124))
        model.add(Activation('relu'))
        # Add Dropout to prevent overfitting
        model.add(Dropout(0.5))
        #Output Layer
        model.add(Dense(1))
        model.add(Activation('sigmoid'))
        #Compiling
        model.compile(loss='binary_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])
        # View model layers
       #model.summary()
        return model
    # Fitting
    model=Model()
    epochs=2
    model.fit_generator(
        train_generator,
        steps_per_epoch=nb_train_samples // batch_size,  
        epochs=epochs,
        validation_data=validation_generator,
        validation_steps=nb_validation_samples // batch_size)
    -------------------------------------------------------------------------------------
    ValueError: Negative dimension size caused by subtracting 2 from 1 for '{{node max_pooling2d_9/MaxPool}} = MaxPool[T=DT_FLOAT, data_format="NHWC", explicit_paddings=[], ksize=[1, 2, 2, 1], padding="VALID", strides=[1, 2, 2, 1]](Placeholder)' with input shapes: [?,1,98,64].

    ما المشكلة؟وما الحل؟

  13. قمت ببناء النموذج التالي، لكن لم أفهم سبب الخطأ؟ حيث بعد أن دربته قمت بحفظه ثم قمت بإعادة تحميله و تنفيذ compile له. علماً أنني أتعامل مع مجموعة بيانات MINST الشهيرة.

    K.set_image_dim_ordering('th')
    numpy.random.seed(7)
    from keras.datasets import mnist
    # تحميل البيانات
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    # تحضير البيانات
    X_train = X_train.reshape(X_train.shape[0], 1, 28, 28)
    X_test = X_test.reshape(X_test.shape[0], 1, 28, 28)
    X_train=X_train.astype('float32')/ 255.0
    X_test=X_test.astype('float32')/ 255.0
    #label ترميز ال
    y_train = np_utils.to_categorical(y_train)
    y_test = np_utils.to_categorical(y_test)
    model = Sequential()
    model.add(Convolution2D(32, 3, 3, input_shape=(1, 28, 28), activation='tanh'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Convolution2D(16, 3, 3, activation='tanh'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.4))
    model.add(Flatten())
    model.add(Dense(100, activation='tanh'))
    model.add(Dense(y_test.shape[1], activation='softmax'))
    # تجميع المعلومات
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['acc'])
    # بناء النموذج
    model = larger_model()
    # تدريبه
    model.fit(X_train, y_train, epochs=12, batch_size=128,validation_data=(X_test, y_test))
    # تقييم النموذج
    scores = model.evaluate(X_test, y_test)
    print("Baseline Error: %.2f%%" % (100-scores[1]*100))
    # حفظه
    model_json = model.to_json()
    with open('mnist_model.json', 'w') as f:
        f.write(model_json)
    model.save_weights("mnist_weights.h5")
    # تحميله
    with open('mnist_model.json') as f:
        model_json = f.read()
    model = model_from_json(model_json)
    model.load_weights('mnist_weights.h5')
    # تجميع المعلومات
    model.compile(loss='sparse_categorical_crossentropy', optimizer='rmsprop', metrics=['acc'])
    scores = model.evaluate(X_test, y_test)
    print("Baseline Error: %.2f%%" % (100-scores[1]*100))

     

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

    from keras.datasets import reuters
    (train_data, train_labels), (test_data, test_labels) = reuters.load_data(
    num_words=100)
    # تررميز البيانات
    import numpy as np
    def vectorize_sequences(sequences, dimension=100):
      results = np.zeros((len(sequences), dimension))
      for i, sequence in enumerate(sequences):
       results[i, sequence] = 1.
      return results
    x_train = vectorize_sequences(train_data)
    x_test = vectorize_sequences(test_data)
    from keras.utils.np_utils import to_categorical
    one_hot_train_labels = to_categorical(train_labels)
    one_hot_test_labels = to_categorical(test_labels)
    # بناء النموذج
    from keras import models
    from keras import layers
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu', input_shape=(100,)))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(46, activation='softmax'))
    # التجميع
    model.compile(optimizer='rmsprop',
    loss='SparseCategoricalCrossentropy',
    metrics=['CategoricalAccuracy'])
    # التدريب
    history = model.fit(x_train,
    one_hot_train_labels,
    epochs=10,
    batch_size=512)
    model.save("model.h5")
    ---------------------------------------------------------------------------
    InvalidArgumentError:  logits and labels must have the same first dimension, got logits shape [512,46] and labels shape [23552]
    	 [[node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits (defined at <ipython-input-10-de26530fc6fc>:31) ]] [Op:__inference_train_function_3812]
    
    Function call stack:
    train_function

     

  15. قمت ببناء النموذج التالي في كيراس لتصنيف الأخبار لكن يظهر لي الخطأ التالي:

    from keras.datasets import reuters
    (train_data, train_labels), (test_data, test_labels) = reuters.load_data(
    num_words=10000)
    # تررميز البيانات
    import numpy as np
    def vectorize_sequences(sequences, dimension=10000):
      results = np.zeros((len(sequences), dimension))
      for i, sequence in enumerate(sequences):
       results[i, sequence] = 1.
      return results
    x_train = vectorize_sequences(train_data)
    x_test = vectorize_sequences(test_data)
    from keras.utils.np_utils import to_categorical
    one_hot_train_labels = to_categorical(train_labels)
    one_hot_test_labels = to_categorical(test_labels)
    x_val = x_train[:1000]
    partial_x_train = x_train[1000:]
    y_val = one_hot_train_labels[:1000]
    partial_y_train = one_hot_train_labels[1000:]
    # بناء النموذج
    from keras import models
    from keras import layers
    model = models.Sequential()
    model.add(layers.Dense(64, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(64, activation='relu'))
    model.add(layers.Dense(46, activation='softmax'))
    history = model.fit(partial_x_train,
    partial_y_train,
    epochs=6,
    batch_size=512,
    validation_data=(x_val, y_val))
    ---------------------------------------------------------------------------
    RuntimeError                              Traceback (most recent call last)
    <ipython-input-3-4d4f3289469d> in <module>()
          3 epochs=6,
          4 batch_size=512,
    ----> 5 validation_data=(x_val, y_val))
    1 frames
    /usr/local/lib/python3.7/dist-packages/keras/engine/training.py in _assert_compile_was_called(self)
       2666     # (i.e. whether the model is built and its inputs/outputs are set).
       2667     if not self._is_compiled:
    -> 2668       raise RuntimeError('You must compile your model before '
       2669                          'training/testing. '
       2670                          'Use `model.compile(optimizer, loss)`.')
    RuntimeError: You must compile your model before training/testing. Use `model.compile(optimizer, loss)`.

    ما المشكلة؟

  16. أحاول حفظ معلومات التدريب training history (نتائج ال loss وال accuracy خلال عملية التدريب بعد كل epoch) لكن يظهر لي الخطأ التالي:

    # تحميل الداتا
    from keras.datasets import boston_housing
    import keras
    (train_data, train_targets), (test_data, test_targets) = boston_housing.load_data()
    # توحيد البيانات
    mean = train_data.mean(axis=0)
    train_data -= mean
    std = train_data.std(axis=0)
    train_data /= std
    test_data -= mean
    test_data /= std
    from keras import models
    from keras import layers
    # بناء النموذج
    def build_model():
        model = models.Sequential()
        model.add(layers.Dense(64, activation='relu',
        input_shape=(train_data.shape[1],)))
        model.add(layers.Dense(64, activation='relu'))
        model.add(layers.Dense(1))
        model.compile(optimizer='rmsprop', loss="mae", metrics=['mae'])
        return model
    # تدريب النموذج
    model = build_model()
    # قمنا بتدريب النموذج
    history=model.fit(train_data, train_targets,epochs=2, batch_size=64)
    import pickle
    with open('/f', 'wb') as f:
         pickle.dump(history, f)
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-25-87b712a3ea34> in <module>()
          1 import pickle
          2 with open('/HistoryDict', 'wb') as f:
    ----> 3      pickle.dump(history, f)
    TypeError: can't pickle weakref objects   

     

×
×
  • أضف...