Meezo ML نشر 9 يوليو 2021 أرسل تقرير نشر 9 يوليو 2021 قمت ببناء نموذج تصنيف متعدد على مجمةعة بيانات x-ray scans لكن لا أفهم سبب الخطأ التالي في الكود: # الكود model = Sequential() model.add(Conv2D(512, (3, 3), input_shape=X_train.shape[1:])) model.add(Activation('tanh')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(128, (3, 3))) model.add(Activation('tanh')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(1000)) model.add(Dense(64)) model.add(Dense(6)) model.add(Activation('softmax')) model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['acc']) model.fit(X_train, y_label, batch_size=64, epochs=20, validation_split=0.2) ------------------------------------------------------------------------------------------------- ValueError: Shapes (None, 1) and (None, 6) are incompatible اقتباس
3 Ali Haidar Ahmad نشر 9 يوليو 2021 أرسل تقرير نشر 9 يوليو 2021 في مسائل التصنيف المتعدد يجب أن تكون حذراً مع اختيار دالة الخسارة، والمشكلة هنا هي في اختيارك لدالة الخسارة، فعندما تكون بيانات y_true مرمزة بترميز One-Hot يجب أن نختار categorical_crossentropy أما إذا كانت بيانات y_true تتبع ترميزاً عادياً (أي كل صنف تم تمثيله بعدد صحيح 1,2,3...,class_n) فهنا يجب أن نختار دالة الخسارة sparse_categorical_crossentropy. 2 اقتباس
1 ريم المهدي نشر 11 يوليو 2021 أرسل تقرير نشر 11 يوليو 2021 بما أنك إخترت categorical_crossentropy لحساب نسبة الخسارة و من اخر طبقة في النموذج أتوقع أن القيم المصنفة تتبع ل6 أصناف مختلفة، لذا وجب تحويل قيم y إلى الترميز المقابل لها ويمكننا فعل ذلك بإستخدام to_categorical لاحظ للمثال التالي و الذي يقوم بتنفيذ عملية تدريب بإستخدام Conv2D على مجموعة بيانات MNIST وهي بيانات صورية ل10 أصناف تمثل الأرقام من 0 إلى 9: import numpy as np from tensorflow import keras from tensorflow.keras import layers from keras.datasets import mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() print(x_train.shape, y_train.shape,x_test.shape, y_test.shape) x_train = np.reshape(x_train, (-1, 28, 28, 1)) x_test = np.reshape(x_test, (-1, 28, 28, 1)) print(x_train.shape, y_train.shape,x_test.shape, y_test.shape) # y تطبيق على قيم one hot encoding y_train = to_categorical(y_train) y_test = to_categorical(y_test) print(x_train.shape, y_train.shape,x_test.shape, y_test.shape) model = keras.Sequential( [ keras.Input(shape=(28, 28, 1)), layers.Conv2D(32, kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(64, kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dropout(0.5), layers.Dense(10, activation="softmax"), ] ) model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) model.fit(x_train, y_train,epochs=1, validation_split=0.1) لاحظ مكان التعليق، قمنا بتحويل 1D y values ل 2D وهي عملية one hot encoding وهو التمثيل المقابل لقيم الأصناف لنقوم بعملية التدريب و التأكد. اقتباس
السؤال
Meezo ML
قمت ببناء نموذج تصنيف متعدد على مجمةعة بيانات x-ray scans لكن لا أفهم سبب الخطأ التالي في الكود:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.