deep learning實踐經驗總結2--準確率再次提升,到達0.8,再來總結一下

deep learning實踐經驗總結2


最近拿caffe來做圖片分類,遇到不少問題,同時也吸取不少教訓和獲得不少經驗。



這次拿大擺裙和一步裙做分類,

多次訓練效果一直在0.7,後來改動了全鏈接層的初始化參數。高斯分佈的標準差由0.001改爲0.0001,就是調小了。

然後效果很明顯,準確率高了,權重圖畫出來後,也看得出是有意義的了,部分權重圖是人的輪廓或者裙子的輪廓。


先看看圖片:

大擺裙

    


一步裙

    


然後找一些響應圖看一下,當然我這裏展示的是一些效果好的響應圖。

大擺裙

     

一步裙

     


一些權重圖:

    


    

    


這是網絡的結構參數:

name: "CIFAR10_full_train"
layers {
 layer {
   name: "cifar"
   type: "data"
   #source: "/home/linger/linger/testfile/crop_train_db"
   #source: "/home/linger/linger/testfile/collar_train_db"
   source: "/home/linger/linger/testfile/skirt_train_db"
   #source: "/home/linger/linger/testfile/pattern_train_db"
   meanfile: "/home/linger/linger/testfile/skirt_train_mean.binaryproto"
   #cropsize: 200
   batchsize: 20
 }
 top: "data"
 top: "label"
}

layers {
  layer {
    name: "conv1"
    type: "conv"
    num_output: 16
    kernelsize: 5
    stride:1 
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "data"
  top: "conv1"
}
layers {
  layer {
    name: "relu1"
    type: "relu"
  }
  bottom: "conv1"
  top: "conv1"
}
layers {
  layer {
    name: "pool1"
    type: "pool"
    pool: MAX
    kernelsize: 2
    stride:1 
  }
  bottom: "conv1"
  top: "pool1"
}
layers {
  layer {
    name: "conv2"
    type: "conv"
    num_output: 16
    group: 2
    kernelsize: 5
    stride:1 
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "pool1"
  top: "conv2"
}
layers {
  layer {
    name: "relu2"
    type: "relu"
  }
  bottom: "conv2"
  top: "conv2"
}
layers {
  layer {
    name: "pool2"
    type: "pool"
    pool: MAX
    kernelsize: 2
    stride: 1
  }
  bottom: "conv2"
  top: "pool2"
}

layers {
  layer {
    name: "ip1"
    type: "innerproduct"
    num_output: 100
    weight_filler {
      type: "gaussian"
      std: 0.0001
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "pool2"
  top: "ip1"
}

layers {
  layer {
    name: "ip2"
    type: "innerproduct"
    num_output: 2
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "ip1"
  top: "ip2"
}

#-----------------------output------------------------
layers {
 layer {
   name: "loss"
   type: "softmax_loss"
 }
 bottom: "ip2"
 bottom: "label"
}



name: "CIFAR10_full_test"
layers {
 layer {
   name: "cifar"
   type: "data"
   #source: "/home/linger/linger/testfile/collar_test_db"
   #source: "/home/linger/linger/testfile/crop_test_db"
   source: "/home/linger/linger/testfile/skirt_test_db"
   #source: "/home/linger/linger/testfile/pattern_test_db"
   meanfile: "/home/linger/linger/testfile/skirt_test_mean.binaryproto"
   #cropsize: 200
   batchsize: 10
 }
 top: "data"
 top: "label"
}

layers {
  layer {
    name: "conv1"
    type: "conv"
    num_output: 16
    kernelsize: 5
    stride:1 
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "data"
  top: "conv1"
}
layers {
  layer {
    name: "relu1"
    type: "relu"
  }
  bottom: "conv1"
  top: "conv1"
}
layers {
  layer {
    name: "pool1"
    type: "pool"
    pool: MAX
    kernelsize: 2
    stride:1 
  }
  bottom: "conv1"
  top: "pool1"
}
layers {
  layer {
    name: "conv2"
    type: "conv"
    num_output: 16
    group: 2
    kernelsize: 5
    stride:1 
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "pool1"
  top: "conv2"
}
layers {
  layer {
    name: "relu2"
    type: "relu"
  }
  bottom: "conv2"
  top: "conv2"
}
layers {
  layer {
    name: "pool2"
    type: "pool"
    pool: MAX
    kernelsize: 2
    stride: 1
  }
  bottom: "conv2"
  top: "pool2"
}
layers {
  layer {
    name: "ip1"
    type: "innerproduct"
    num_output: 100
    weight_filler {
      type: "gaussian"
      std: 0.0001
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "pool2"
  top: "ip1"
}

layers {
  layer {
    name: "ip2"
    type: "innerproduct"
    num_output: 2
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.
    }
    blobs_lr: 1.
    blobs_lr: 1.
    weight_decay: 0.001
    weight_decay: 0.
  }
  bottom: "ip1"
  top: "ip2"
}

#-----------------------output------------------------
layers {
 layer {
   name: "prob"
   type: "softmax"
 }
 bottom: "ip2"
 top: "prob"
}
layers {
  layer {
    name: "accuracy"
    type: "accuracy"
  }
  bottom: "prob"
  bottom: "label"
  top: "accuracy"
}


# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
# then another factor of 10 after 10 more epochs (5000 iters)

# The training protocol buffer definition
train_net: "cifar10_full_train.prototxt"
# The testing protocol buffer definition
test_net: "cifar10_full_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 20
# Carry out testing every 1000 training iterations.
test_interval: 100
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.00001
momentum: 0.9
weight_decay: 0.004
# The learning rate policy
lr_policy: "fixed"
# Display every 200 iterations
display: 20
# The maximum number of iterations
max_iter: 60000
# snapshot intermediate results
snapshot: 1000
snapshot_prefix: "cifar10_full"
# solver mode: 0 for CPU and 1 for GPU
solver_mode: 1


真的是多玩數據,纔會對數據形成一種感覺啊。

下次玩3類的。敬請期待!





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章