내 모델을 이미지 데이터 세트에서 실행할 때 계산되는 초기 손실은 caffe를 실행할 때마다 일정하게 유지됩니다. 매번 모델을 실행할 때 초기 손실이 (atleast 약간) 달라야하기 때문에 문제는 이상하지 않습니다.데이터 세트에서 caffe 모델을 실행할 때마다 손실이 일정하게 유지됩니다.
또한 손실 계층에서 SoftmaxWithLoss 함수를 제공하면 손실 값이 다음 반복에서 일정하게 유지됩니다. 또한 deconvolution 레이어에서 lr_mult = 0을 주면 손실이 반복을 통해 일정하게 나타납니다. lr_mult = 1을 지정하면 손실 값이 변경되지만 마지막으로 수천 회 반복 한 후 초기 손실 값을 충족합니다.
이와 관련한 의견이 있으십니까?
아무쪼록이 점에 큰 도움이됩니다.
test_iter: 100
test_interval: 100 # py solving tests
display: 100
#average_loss: 100
lr_policy: "fixed"
base_lr: 0.0000001
momentum: 0.5
iter_size: 1
# base_lr: 1e-9
# momentum: 0.99
# iter_size: 1
max_iter: 1000000
#weight_decay: 0.0005
snapshot: 1000
snapshot_diff: true
#test_initialization: false
solver_mode: GPU
다음은 내 길쌈 신경망의 구조입니다 :
다음은 내 해결사 파일입니다.
# Input 128 640 3
# Conv1 (kernel=3) 126 638 64
# ReLU
# Conv2 (kernel=3) 124 636 128
# ReLU
# Conv3 (kernel=3) 122 634 256
# ReLU
# Pool1 (kernel=2) 61 317 256
# Conv4 (kernel=4) 58 314 512
# ReLU
# Conv5 (kernel=4) 55 311 1024
# ReLU
# Conv6 (kernel=4) 52 308 512
# ReLU
# Pool2 (kernel=2) 26 154 512
# Conv7 (kernel=4,stride=2,pad=3) 15 79 5
# ReLU
# Decon1 (kernel=16,stride=8,pad=3) 128 640 5
# ReLU
# Loss
name: "Conv-Deconv-Net"
layer {
name: "data"
type: "Data"
top: "data"
include {
phase: TRAIN
}
data_param {
source: "F:/shripati/v9/Models/3_Conv_Deconv_Arch_SoftmaxWithLoss/Data/training_lmdb_files/training_files_orig_IMG_LMDB_olpywm"
batch_size: 4
backend: LMDB
}
}
layer {
name: "label"
type: "Data"
top: "label"
include {
phase: TRAIN
}
data_param {
source: "F:/shripati/v9/Models/3_Conv_Deconv_Arch_SoftmaxWithLoss/Data/training_lmdb_files/training_files_orig_LBL_LMDB_olpywm"
batch_size: 4
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
include {
phase: TEST
}
data_param {
source: "F:/shripati/v9/Models/3_Conv_Deconv_Arch_SoftmaxWithLoss/Data/testing_lmdb_files/testing_files_IMG_LMDB_olpywm"
batch_size: 4
backend: LMDB
}
}
layer {
name: "label"
type: "Data"
top: "label"
include {
phase: TEST
}
data_param {
source: "F:/shripati/v9/Models/3_Conv_Deconv_Arch_SoftmaxWithLoss/Data/testing_lmdb_files/testing_files_LBL_LMDB_olpywm"
batch_size: 4
backend: LMDB
}
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 3
stride: 1
pad: 0
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "relu1"
type: "ReLU"
bottom: "conv1"
top: "relu1"
}
layer {
name: "conv2"
type: "Convolution"
bottom: "relu1"
top: "conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "relu2"
type: "ReLU"
bottom: "conv2"
top: "relu2"
}
layer {
name: "conv3"
type: "Convolution"
bottom: "relu2"
top: "conv3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.001
}
}
}
layer {
name: "relu3"
type: "ReLU"
bottom: "conv3"
top: "relu3"
}
layer {
name: "pool1"
type: "Pooling"
bottom: "relu3"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
name: "conv4"
type: "Convolution"
bottom: "pool1"
top: "conv4"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 0
kernel_size: 4
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.001
}
}
}
layer {
name: "relu4"
type: "ReLU"
bottom: "conv4"
top: "relu4"
}
layer {
name: "conv5"
type: "Convolution"
bottom: "relu4"
top: "conv5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
pad: 0
kernel_size: 4
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.001
}
}
}
layer {
name: "relu5"
type: "ReLU"
bottom: "conv5"
top: "relu5"
}
layer {
name: "conv6"
type: "Convolution"
bottom: "relu5"
top: "conv6"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 0
kernel_size: 4
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.001
}
}
}
layer {
name: "relu6"
type: "ReLU"
bottom: "conv6"
top: "relu6"
}
layer {
name: "pool2"
type: "Pooling"
bottom: "relu6"
top: "pool2"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
name: "conv7"
type: "Convolution"
bottom: "pool2"
top: "conv7"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 5
pad: 3
kernel_size: 4
stride: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.001
}
}
}
layer {
name: "relu7"
type: "ReLU"
bottom: "conv7"
top: "relu7"
}
layer {
name: "deconv1"
type: "Deconvolution"
bottom: "relu7"
top: "deconv1"
param {
lr_mult: 1
}
convolution_param {
num_output: 5
bias_term: false
kernel_size: 16
stride: 8
pad: 0
weight_filler {
type: "bilinear"
}
}
}
layer {
name: "relu8"
type: "ReLU"
bottom: "deconv1"
top: "relu8"
}
#layer {
# name: "crop"
# type: "Crop"
# bottom: "deconv3"
# bottom: "data"
# top: "score"
#}
layer {
name: "prob"
type: "SoftmaxWithLoss"
bottom: "relu8"
bottom: "label"
top: "loss"
loss_param {
# ignore_label: 255
# normalize: true
normalize: false
}
}
학습 속도는 어떻게됩니까? –
안녕하세요, 저는 solver와 config 파일을 편집에 추가했습니다. – shripati007