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

با تشکر

0 امتیاز

با سلام من در لینوکس ubuntu14.4 کفی رو نصب کردم اموزش شماره ۵ اون قسمت که لایه رو تعریف می کنید کجا باید نوشته بشه داخل ترمینال نوشتم خطا داد. لطفا یه مقدار با جزییات بفرمایید برای ما که مبتدی هستیم هم واضح باشه ممنون

سوال شده توسط (102 امتیاز)
سلام
اگه جوابتون رو نگرفتید اینجا توضیح بدید تا من بیشتر توضیح بدم .
سلام من اموزش کفی ۳ رو دیدم مثال هایی که اوردین اجرا کردم ولی خطا میده توی ترمینال گذاشتم
# train LeNet
caffe train ‐solver examples/mnist/lenet_solver.prototxt
# train on GPU 2
caffe train ‐solver examples/mnist/lenet_solver.prototxt ‐gpu 2
# resume training from the half‐way point snapshot
caffe train ‐solver examples/mnist/lenet_solver.prototxt ‐snapshot
examples/mnist/lenet_iter_5000.solverstate


خطایی که میده این هست
ommand 'caffe' found, did you mean:
 Command 'caff' from package 'signing-party' (universe)
caffe: command not found
ubontu@ubuntu:~$ # train on GPU 2
ubontu@ubuntu:~$ caffe train ‐solver examples/mnist/lenet_solver.prototxt ‐gpu 2No command 'caffe' found, did you mean:
 Command 'caff' from package 'signing-party' (universe)
caffe: command not found
ubontu@ubuntu:~$ # resume training from the half‐way point snapshot
ubontu@ubuntu:~$ caffe train ‐solver examples/mnist/lenet_solver.prototxt ‐snapshot
No command 'caffe' found, did you mean:
 Command 'caff' from package 'signing-party' (universe)
caffe: command not found
ubontu@ubuntu:~$ examples/mnist/lenet_iter_5000.solverstate
bash: examples/mnist/lenet_iter_5000.solverstate: No such file or directory

2 پاسخ

+1 امتیاز

سلام...این چیزی که میگم مطمئن نیستم (چون الان خودم تو محیط ویندوز هستم)، اما فک کنم شما اگر به مسیر example در مسیری که کافه را نصب کردید بروید ، در اونجا فایل های مختلف شبکه های مختلف رو مشاهده میکنید که مثلا اگر وارد الکس نت بشوید ، فایل solver و فایل train_val.prototxt و deploy.prototxt رو مشاهده میکنید که اگر فایل train_val.prototxt رو باز کنید ، تعاریف لایه های مختلف درونش قرار داره ...داخل ترمینال نباید تعاریف لایه نوشته بشه و شما در داخل ترمینال فقط یک کامند میزنید که شبکه شروع به آموزش کنه و اون کامندهایی که برای تست و ترین شبکه کانولوشنی در داخل ترمینال باید نوشته بشه رو آقای حسن پور لطف کردن و در قسمت (آموزش Caffe بخش سوم : اینترفیس ها و نحوه اجرا) آموزش داده اند...موفق باشید

باز انشاله فردا دوستان میان و پاسخ میدن که مطمئن تر بشید...

پاسخ داده شده توسط (215 امتیاز)
+1 امتیاز

سلام
همونطور که آقا سینا توضیح دادن شما معماری رو در داخل فایلهایی با پسوند prototxt طراحی میکنید.
یعنی ابتدا یک فایل ایجاد میکنید با پسوند .prototxt (مثلا با نام train_test.prototxt) و بعد یک فایل دیگه ایجاد میکنید با نام solver.prototxt . در فایل اول معماری خودتون رو مینویسید و در فایل دوم تنظیمات مربوط به آموزش مثل تعداد تکرار ، نرخ یادگیری، مسیر شبکه(که مسیر فایل train_test.prototxt رو مشخص میکنید) و....
مثلا تعریف شبکه ای که در آموزش 5 ام میبینید باید در یک فایل با پسوند prototxt ذخیره بشه
مثلا lenet_train_test.prototxt :

name: "LeNet"
layers {
  name: "mnist"
  type: DATA
  top: "data"
  top: "label"
  data_param {
    source: "examples/mnist/mnist_train_lmdb"
    backend: LMDB
    batch_size: 64
  }
  transform_param {
    scale: 0.00390625
  }
  include: { phase: TRAIN }
}
layers {
  name: "mnist"
  type: DATA
  top: "data"
  top: "label"
  data_param {
    source: "examples/mnist/mnist_test_lmdb"
    backend: LMDB
    batch_size: 100
  }
  transform_param {
    scale: 0.00390625
  }
  include: { phase: TEST }
}
layers {
  name: "conv1"
  type: CONVOLUTION
  bottom: "data"
  top: "conv1"
  blobs_lr: 1
  blobs_lr: 2
  convolution_param {
    num_output: 20
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layers {
  name: "pool1"
  type: POOLING
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layers {
  name: "conv2"
  type: CONVOLUTION
  bottom: "pool1"
  top: "conv2"
  blobs_lr: 1
  blobs_lr: 2
  convolution_param {
    num_output: 50
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layers {
  name: "pool2"
  type: POOLING
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layers {
  name: "ip1"
  type: INNER_PRODUCT
  bottom: "pool2"
  top: "ip1"
  blobs_lr: 1
  blobs_lr: 2
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layers {
  name: "relu1"
  type: RELU
  bottom: "ip1"
  top: "ip1"
}
layers {
  name: "ip2"
  type: INNER_PRODUCT
  bottom: "ip1"
  top: "ip2"
  blobs_lr: 1
  blobs_lr: 2
  inner_product_param {
    num_output: 10
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layers {
  name: "accuracy"
  type: ACCURACY
  bottom: "ip2"
  bottom: "label"
  top: "accuracy"
  include: { phase: TEST }
}
layers {
  name: "loss"
  type: SOFTMAX_LOSS
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}

,و تنظیمات هم باید در یک فایل دیگه

# مسیر فایل مربوط به معماری شما که برای آموزش و تست استفاده میشه. 
net: "examples/mnist/lenet_train_test.prototxt"
test_iter: 100
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# سیاست موجود برای نرخ یادگیری
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# نتایج را در هر 100 بار تکرار نمایش بده
display: 100
# بیشترین تعداد تکرار
max_iter: 10000
# snapshot intermediate results
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
# در اینجا مشخص میکنیم که آیا عملیات با استفاده از سی پی یو اجرا شود یا جی پی یو.
solver_mode: GPU

این فایل رو هم مثلا با نام solver.prototxt ذخیره میکنید.
حالا برای شروع آموزش شبکه وارد ترمینال یا command prompt میشید و از روت caffe دستوراتی که در زیر توضیح میدم رو وارد میکنید
روت کفی یعنی پوشه اصلی کفی که وقتی واردش میشید پوشه های examples, tools, scripts ,data,model و ... .مشخص هست. (مسیر جاری شما در ترمینال باید روت کفی باشه تا وقتی دستورات رو بصورت نسبی وارد میکنید خطا نگیرید)
حالت کلی دستور بشکل زیر هست و این رو در ترمینال باید وارد کرد .

caffe train ‐solver examples/mnist/solver.prototxt

اینجا ما مسیر فایل solver خودمون رو در قالب یک ارگومان برای فایل اجرایی کفی ارسال میکنیم . همونطور که میبینید کفی دوتا آرگومان گرفته یکی train و دیگری -solver که اولی مشخص میکنه ما بدنبال آموزش شبکه هستیم و دومی داره میگه مسیر فایل تنظیمات شبکه کجاست .

حالا درعمل بخواییم اجرا کنیم مسیر فایل اجرایی کفی رو هم باید مشخص کنیم یعنی نهایتا اینطور میشه :

./build/tools/caffe train --solver=examples/mnist/solver.prototxt

که اطلاعات کامل در بخش سوم آموزش کفی اومده .
حالا برای اینکه هربار ما این دستور رو در ترمینال وارد نکنیم میشه این دستور رو داخل یک فایل با پسوند sh نوشت (در لینوکس و در ویندوز هم در قالب یک فایل .bat ) و موقع اجرا فقط همون فایل بش یا بچ رو اجرا کرد . برای همین هست که در آموزش با دستوراتی مثل زیر شما مواجه میشید :

./examples/mnist/ train_lenet.sh

ضمنا یادتون باشه قبل از انجام آموزش باید دیتاست رو ایجاد بکنید همونطوری که در آموزش پنجم توضیح داده شده و بعدز اینکه با موفقیت مراحل ساخت دیتاست رو انجام دادید نوبت به آموزش شبکه است.

پاسخ داده شده توسط (4.2k امتیاز)
سلام
ubontu@ubuntu:~/caffe$ ./build/tools/caffe train --solver=examples/mnist/solver.prototxt

I0819 09:25:36.127923  3356 caffe.cpp:211] Use CPU.
I0819 09:25:36.298687  3356 solver.cpp:44] Initializing solver from parameters:
test_iter: 100
test_interval: 500
base_lr: 0.01
display: 100
max_iter: 10000
lr_policy: "inv"
gamma: 0.0001
power: 0.75
momentum: 0.9
weight_decay: 0.0005
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: CPU
net: "examples/mnist/lenet_train_test.prototxt"
train_state {
  level: 0
  stage: ""
}
I0819 09:25:36.301380  3356 solver.cpp:87] Creating training net from net file: examples/mnist/lenet_train_test.prototxt
I0819 09:25:36.302032  3356 upgrade_proto.cpp:53] Attempting to upgrade input file specified using deprecated V1LayerParameter: examples/mnist/lenet_train_test.prototxt
I0819 09:25:36.302620  3356 upgrade_proto.cpp:61] Successfully upgraded file specified using deprecated V1LayerParameter
I0819 09:25:36.334213  3356 net.cpp:294] The NetState phase (0) differed from the phase (1) specified by a rule in layer mnist
I0819 09:25:36.373965  3356 net.cpp:294] The NetState phase (0) differed from the phase (1) specified by a rule in layer accuracy
I0819 09:25:36.402292  3356 net.cpp:51] Initializing net from parameters:
name: "LeNet"
state {
  phase: TRAIN
  level: 0
  stage: ""
}
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "examples/mnist/mnist_train_lmdb"
    batch_size: 64
    backend: LMDB
  }
}
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 20
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 50
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "pool2"
  top: "ip1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "ip1"
  top: "ip1"
}
layer {
  name: "ip2"
  type: "InnerProduct"
  bottom: "ip1"
  top: "ip2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 10
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}
I0819 09:25:36.410114  3356 layer_factory.hpp:77] Creating layer mnist
F0819 09:25:36.629801  3356 db_lmdb.hpp:15] Check failed: mdb_status == 0 (2 vs. 0) No such file or directory
*** Check failure stack trace: ***
    @ 0xb7365efc  (unknown)
    @ 0xb7365e13  (unknown)
    @ 0xb736585f  (unknown)
    @ 0xb73688b0  (unknown)
    @ 0xb74f001e  caffe::db::LMDB::Open()
    @ 0xb75c4138  caffe::DataLayer<>::DataLayer()
    @ 0xb75c42d3  caffe::Creator_DataLayer<>()
    @ 0xb764d101  caffe::Net<>::Init()
    @ 0xb764fa57  caffe::Net<>::Net()
    @ 0xb74d8b68  caffe::Solver<>::InitTrainNet()
    @ 0xb74d9d1e  caffe::Solver<>::Init()
    @ 0xb74da029  caffe::Solver<>::Solver()
    @ 0xb752e7df  caffe::Creator_SGDSolver<>()
    @  0x8055fdf  caffe::SolverRegistry<>::CreateSolver()
    @  0x804ed39  train()
    @  0x804c650  main
    @ 0xb6f95af3  (unknown)
    @  0x804cf63  (unknown)
Aborted (core dumped)
اصلاح کردم و نتیجه بالا فرستادم
سلام . دو نکته. نکته اول اینکه سمت راست سایت اطلاعیه و تذکرات رو لطفا بخونید خصوصا درمورد کپی کردن لاگهای طولانی .
حالا برای مشکلتون. شما قبل از تلاش برای اموزش mnist دیتاستهاش رو ایجاد کردید یا نه ؟ بنظر میاد اینکارو نکردید. اول دیتاست mnist رو بفرمت lmdb ایجاد کنید بعد ترین رو استارت بزنید.
سلام درست شد و درحال اموزش هست .خیلی ممنونم از راهنمای هاتون
...