سلام
بله باید با استفاده از netspec
که مثالش تو پوشه examples هست معماری شبکه رو بصورت کد بنویسید . بعد چون کدنویسی هست دست خودتونه و هر هنری دارید میتونید اجرا کنید.
مثال زیر نحوه تعریف مدل رو در netspec
نشون میده شیوه ترینینگ هم مثل قبل هست:
# helper function for common structures
def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):
conv = L.Convolution(bottom, kernel_size=ks, stride=stride,
num_output=nout, pad=pad, group=group)
return conv, L.ReLU(conv, in_place=True)
# another helper function
def fc_relu(bottom, nout):
fc = L.InnerProduct(bottom, num_output=nout)
return fc, L.ReLU(fc, in_place=True)
# yet another helper function
def max_pool(bottom, ks, stride=1):
return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)
# main netspec wrapper
def caffenet_multilabel(data_layer_params, datalayer):
# setup the python data layer
n = caffe.NetSpec()
n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer,
ntop = 2, param_str=str(data_layer_params))
# the net itself
n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4)
n.pool1 = max_pool(n.relu1, 3, stride=2)
n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)
n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2)
n.pool2 = max_pool(n.relu2, 3, stride=2)
n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)
n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1)
n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2)
n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2)
n.pool5 = max_pool(n.relu5, 3, stride=2)
n.fc6, n.relu6 = fc_relu(n.pool5, 4096)
n.drop6 = L.Dropout(n.relu6, in_place=True)
n.fc7, n.relu7 = fc_relu(n.drop6, 4096)
n.drop7 = L.Dropout(n.relu7, in_place=True)
n.score = L.InnerProduct(n.drop7, num_output=20)
n.loss = L.SigmoidCrossEntropyLoss(n.score, n.label)
return str(n.to_proto())
اینجا رو هم ببینید خوبه . ولی یادتون باشه کفی در همین بخش بطور خاص خیلی مشکل داره (بخاطر مستنداتش) برای اینکه بفهمید چیکار باید بکنید یا چه توابعی در اختیار دارید باید از طریق مثالهایی که هست بفهمید یا اینکه رپر پایتونی که وجود داره رو باز کنید و تک تک فایلها رو بخونید و از کامنتها و کدها متوجه بشید چه چیزی وجود داره و چیکار باید کرد. کارهای عادی مثالهاش هست اما یکم بیشتر ادم بخواد کار واقعا بمشکل میخوره.