سلام
بله تا زمانی که تنها چیزی که تغییر میدید نام لایه باشه بله هیچ مشکلی ندارید
در زمان لود وزن ها اتفاقی که می افته اینه که نام لایه ها چک میشه هر نام لایه ای در مدل از پیش ذخیره شما وجود داشته باشه وزنها و اطلاعات مربوطه لود میشن. اگر نامی وجود نداشته باشه بصورت رندوم مقدار دهی میشه (بر اساس الگوریتم و پارامتری که برای اون لایه مشخص شده)
برای اینکار هم باید از سویچ weights استفاده کنید بصورت زیر
caffe.exe train --solver=solver.prototxt --weights=model.caffemodel
زمانی هم که نام لایه رو تغییر میدید باید top_blob اون رو هم تغییر بدید که بدیهی هست .
layer {
name: "conv1_"
type: "Convolution"
bottom: "data"
top: "conv1_"
param {
lr_mult: 1
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
stride: 1
bias_term: true
weight_filler {
type: "msra"
}
}
}
layer {
name: "bn1"
type: "BatchNorm"
bottom: "conv1_"
top: "bn1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
include {
phase: TRAIN
}
batch_norm_param {
use_global_stats: false
moving_average_fraction: 0.95
}
}
layer {
name: "bn1"
type: "BatchNorm"
bottom: "conv1_"
top: "bn1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
include {
phase: TEST
}
batch_norm_param {
use_global_stats: true
moving_average_fraction: 0.95
}
}
layer {
name: "scale1"
type: "Scale"
bottom: "bn1"
top: "scale1"
scale_param {
bias_term: true
}
}
مثلا در این مثال من میخوام لایه اول رو تغییر نام بدم. تنها کاری که کردم اینه که نام لایه اول و نام بلاب خروجی تغییر داده شد. نیازی به تغییر دیگه ای نیست.