به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام.
من یک کدی رو در متلب نوشته بودم و الان سعی میکنم عینا همون کد رو در کراس پیاده سازی کنم ولی عملکردشون خیلی متفاوته. خواستم بدونم دو ستانی که کراس کار کردن مشکل از کجاست. شرح کاملش اینجاس
- مسیله کلاس بندی به سه کلاس
- train و test دیتا دقیقا هم در متلب و هم کراس یکی هستند
- تمام عکسها ترین و تست به سایز 224و224 resize شده اند
- روش حل با فاین تیونینگ VGG16
- در کراس:

model = application.VGG16(weight='imagenet',include top = True, input_shape=(224,224,3)))
model.layers.pop()
top_model = sequential()
top_model.add(Dense(64,activation ='relu',input_shape=model.layers[-1].ouputshape[1:]))
top_model.add(Dense(3,activation = 'softmax',activity_regulizer = keras.regulizers.l2(0.0001)))
model = Model(inputs = model.input, outputs = top_model(model.layers[-1].output))

for layer in model.layers[:22]:#all layers except newly added layers
layer.trainable = False

model.compile(loss='categorical_crossentropy',
          optimizer=optimizers.SGD(lr=0.01, momentum=0.9),
          metrics=['accuracy'])

train_datagen = ImageDataGenerator(
preprocessing_function = preprocess_input)

train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(224,224),
batch_size=32,
class_mode='categorical')

model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // (batch_size),
epochs=50,
  callbacks=[cb_tensorboard],
shuffle=True)

در متلب:

net =vgg16
layers = net.Layers(1:end-3);% removing callsification output layer, softmax layer and last fully connected layer like keras
layers(end+1) = fullyConnectedLayer(64, 'Name', 'special_2');
 layers(end+1) = reluLayer('Name', 'selfAddedRelu');
 layers(end+1) = fullyConnectedLayer(3, 'Name', 'fc8_2');
 layers(end+1) = softmaxLayer;
 layers(end+1) = classificationLayer();
layers(end-2).WeightLearnRateFactor = 1000;
layers(end-2).WeightL2Factor = 1;
layers(end-2).BiasLearnRateFactor = 20;
layers(end-2).BiasL2Factor = 0;

layers(end-4).WeightLearnRateFactor = 1000;
layers(end-4).WeightL2Factor = 1;
layers(end-4).BiasLearnRateFactor = 20;
layers(end-4).BiasL2Factor = 0;
options = trainingOptions('sgdm',...
'MiniBatchSize',32,...
'MaxEpochs',50,...
'InitialLearnRate',0.00001,...
'L2Regularization',0.0001,...
'Momentum' ,0.9,...
'ValidationData',ValImages,...
'ValidationFrequency',20,...# number od iterartion not epochs
'ValidationPatience',Inf,...#Inf = no criteria to stop training
'Shuffle','every-epoch')

net = trainNetwork(trainingDS, layers, options);

عملکرد متلب بر اساس AUC برای دو باینری classification

AUC (Class1 versus all) = 91%
AUC (class2 versus all)=80%

عملکرد کراس:

AUC (Class1 versus all) = 81%
AUC (class2 versus all)=70%
  • متلب بصورت پیشفرض imageNet subtraction رو انجام میده معادل preprocess_input در کراس برای VGG16
  • trainining acc در هر دو حالت تقریبا 100% میشه
توسط (255 امتیاز)
ویرایش شده توسط

لطفا وارد شده یا عضو شوید تا بتوانید سوال بپرسید

...