我试图在caffe中训练一个二元分类模型,它告诉输入图像是狗还是背景。我有8223个阳性样本,33472个阴性样本。我的验证集包含1200个样本,每个类600个。事实上,我的优点是摘自MS-COCO数据集的片段。所有的图像都被调整大小,所以比格维度不超过92,较小的维度不小于44。在使用create_imagenet.sh(resize=false)创建LMDB文件之后,我开始使用求解器进行训练,下面是train.prototxt。问题是,我得到了一个恒定的精度(0.513333或0.486667),这表明网络没有学习任何东西。我希望有人能帮忙提前谢谢你
求解器文件:
iter_size: 32
test_iter: 600
test_interval: 20
base_lr: 0.001
display: 2
max_iter: 20000
lr_policy: "step"
gamma: 0.99
stepsize: 700
momentum: 0.9
weight_decay: 0.0001
snapshot: 40
snapshot_prefix: "/media/DATA/classifiers_data/dog_object/models/"
solver_mode: GPU
net: "/media/DATA/classifiers_data/dog_object/net.prototxt"
solver_type: ADAM
layer {
name: "train-data"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
data_param {
source: "/media/DATA/classifiers_data/dog_object/ilsvrc12_train_lmdb"
batch_size: 1
backend: LMDB
}
}
layer {
name: "val-data"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
data_param {
source: "/media/DATA/classifiers_data/dog_object/ilsvrc12_val_lmdb"
batch_size: 1
backend: LMDB
}
}
layer {
name: "scale"
type: "Power"
bottom: "data"
top: "scale"
power_param {
scale: 0.00390625
}
}
layer {
bottom: "scale"
top: "conv1_1"
name: "conv1_1"
type: "Convolution"
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
param {
lr_mult: 1
}
param {
lr_mult: 1
}
}
layer {
bottom: "conv1_1"
top: "conv1_1"
name: "relu1_1"
type: "ReLU"
}
layer {
bottom: "conv1_1"
top: "conv1_2"
name: "conv1_2"
type: "Convolution"
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
param {
lr_mult: 1
}
param {
lr_mult: 1
}
}
layer {
bottom: "conv1_2"
top: "conv1_2"
name: "relu1_2"
type: "ReLU"
}
layer {
name: "spatial_pyramid_pooling"
type: "SPP"
bottom: "conv1_2"
top: "spatial_pyramid_pooling"
spp_param {
pool: MAX
pyramid_height : 4
}
}
layer {
bottom: "spatial_pyramid_pooling"
top: "fc6"
name: "fc6"
type: "InnerProduct"
inner_product_param {
num_output: 64
}
param {
lr_mult: 1
}
param {
lr_mult: 1
}
}
layer {
bottom: "fc6"
top: "fc6"
name: "relu6"
type: "ReLU"
}
layer {
bottom: "fc6"
top: "fc6"
name: "drop6"
type: "Dropout"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
bottom: "fc6"
top: "fc7"
name: "fc7"
type: "InnerProduct"
inner_product_param {
num_output: 2
}
param {
lr_mult: 1
}
param {
lr_mult: 1
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc7"
bottom: "label"
top: "loss"
}
layer {
name: "accuracy/top1"
type: "Accuracy"
bottom: "fc7"
bottom: "label"
top: "accuracy"
include: { phase: TEST }
}
I1125 15:52:36.604038 2326 Solver.cpp:362]迭代40,测试网(#0)
I1125 15:52:36.604071 2326 net.cpp:723]忽略源层训练数据
I1125 15:52:47.127979 2326 Solver.cpp:429]测试净输出#0:准确度=0.486667
I1125 15:52:48.938040 2326 SGD_Solver.cpp:106]迭代40,lr=0.001
I1125 15:52:52.858757 2326 Solver.cpp:242]迭代42(0.510097 iter/s,3.92083 S/2 iter),损失=0.673962
I1125 15:52:52.858841 2326 Solver.cpp:261]列车净输出#0:损失=0.653978(*1=0.653978损失)
I1125 15:52:56.581689 2326 SGD_Solver.cpp:106]迭代44,lr=0.001
I1125 15:53:00.192082 2326 Solver.cpp:242]迭代46(0.553941 iter/s,3.61049 S/2 iter),损失=0.669606
I1125 15:53:00.192167 2326 Solver.cpp:261]列车净输出#0:损失=0.650559(*1=0.650559损失)
I1125 15:53:04.195691 2326 Solver.cpp:261]列车净输出#0:损失=0.648808(*1=0.648808损失)
I1125 15:53:04.195736 2326 SGD_Solver.cpp:106]迭代48,lr=0.001
I1125 15:53:07.856842 2326 Solver.cpp:242]迭代50(0.546265 iter/s,3.66123 S/2 iter),损失=0.661835
I1125 15:53:11.681720 2326 Solver.cpp:261]列车净输出#0:损失=0.743264(*1=0.743264损失)
I1125 15:53:11.681754 2326 SGD_Solver.cpp:106]迭代52,lr=0.001
I1125 15:53:15.544859 2326 Solver.cpp:242]迭代54(0.517707 iter/s,3.86319 S/2 iter),损失=0.656414
I1125 15:53:15.544986 2326 SGD_Solver.cpp:106]迭代54,lr=0.001
I1125 15:53:19.354320 2326 Solver.cpp:242]迭代56(0.525012 iter/s,3.80943 S/2 iter),损失=0.645277
I1125 15:53:19.354404 2326 Solver.cpp:261]列车净输出#0:损失=0.747059(*1=0.747059损失)
I1125 15:53:23.195549 2326 Solver.cpp:261]列车净输出#0:损失=0.640145(*1=0.640145损失)
I1125 15:53:23.195575 2326 SGD_Solver.cpp:106]迭代58,lr=0.001
I1125 15:53:25.140920 2326 Solver.cpp:362]迭代60,测试网(#0)
I1125 15:53:25.140965 2326 net.cpp:723]忽略源层训练数据
I1125 15:53:35.672775 2326 Solver.cpp:429]测试净输出#0:精确度=0.513333
I1125 15:53:35.672937 2326 Solver.cpp:429]测试净输出#1:损失=0.69323(*1=0.69323损失)
I1125 15:53:37.635512 2326 SGD_Solver.cpp:106]迭代60,lr=0.001
I1125 15:53:41.458472 2326 Solver.cpp:242]迭代62(0.523143 iter/s,3.82305 S/2 iter),损失=0.672996
I1125 15:53:41.458555 2326 SOLVER.CPP:261]列车净输出#0:损失=0.753101(*1=0.753101损失)
I1125 15:53:45.299643 2326 Solver.cpp:242]迭代64(0.520679 iter/s,3.84114 S/2 iter),损失=0.668675
I1125 15:53:45.299737 2326 Solver.cpp:261]列车净输出#0:损失=0.634894(*1=0.634894损失)
一些评论:
1。您的测试集包含1200个示例,但每次只验证600个:test_iter
*batch_size
=600。有关详细信息,请参阅此答案。
2。创建LMDB时是否洗牌了训练数据?有关详细信息,请参阅此答案。
3。你如何初始化你的体重?prototxt文件中似乎没有调用filler
s。如果未显式定义填充器
,则权重将初始化为零。对新币来说,这是一个非常困难的起点。有关详细信息,请参阅此答案。
4。您是否尝试在求解器中设置debug_info:true
并查看调试日志以跟踪问题的根本原因?有关更多细节,请参见此线程。
我使用的是320 kbps,大约1小时长的MP3文件。我正在做的项目是在MP3文件中寻找一组音乐,这样它就可以洗牌歌曲。我会给程序加上时间戳,它会搜索歌曲。如果JavaFX的seek方法不是非常不准确的话,它就可以工作了。 使用返回我们期望的持续时间。然而,如果我们听mp3文件(或者不寻找,或者在外部mp3播放器中),我们会意识到报告的时间和实际情况是非常不同的,有时甚至是几秒钟。 例如结果搜索到
我注意到消息的EnqueueTimeUtc值不准确 我正在为我的系统使用ServiceBus主题和订阅者 发送方在.NET中使用“Microsoft.Azure.ServiceBus”version=“4.1.1”NuGet包编写,使用SendAsync()方法将消息发送到主题 订阅方是使用Azure.ServiceBus.Control_Client(azure-servicebus versi
我正在用Java开发一个简单的2D游戏。 我正在使用JFrame类,但是我不认为宽度和高度是我指定的,或者图形不正确。 下面是我的一些代码片段: JFrame显示黑色背景。然而,根据我给fillRect函数的参数,框架底部仍然应该有一条10px高的白色长条。事实并非如此。白色的银条只有在从框架高度降低30像素后才真正开始显示。 谢谢你的帮助。
编辑:我刚刚删除了其他的方法,我们已经验证是正确的,因为问题似乎有点长,这些方法似乎是无关的。 我有一个circle类,它有以下属性:中心、半径、旧位置、加速度、质量和恢复。 如果你接受向量方法的表面价值是正确的,这会有帮助,我认为它们的命名足够好,让你弄清楚它们的作用,但我也可以把它们粘贴进去。 我的主要问题是,当我运行它时,它注册了一个碰撞发生了,但是第二个圆圈的值位置没有改变。我将如何解决这
我正在用C++的SFML制作一个2D游戏,我有一个冲突的问题。我有一个玩家和一张用瓷砖做的地图。不起作用的是我的碰撞检测不准确。当我将玩家向上移动然后向下移动到瓷砖上时,结果会有所不同。 我知道这个问题的根源可能是在计算球员移动时使用帧间的delta时间--所以它不是恒定的。但它平滑了运动,所以我不知道如何做它的其他方式。我试着用定速阀来使碰撞完全准确--速度必须非常低,我对此不满意。 在玩家位置
问题内容: 我在这里阅读这个问题: 在SQL数据库中存储经度和纬度数据时应使用哪种数据类型? 似乎普遍的共识是使用Decimal(9,6)是可行的方法。我的问题是,我真的需要多少精度? 例如,Google的API返回如下结果: 在-122.0841430中,我需要几位数?我已经阅读了几本指南,但是我从中没有足够的道理来解决这个问题。 为了更精确地回答我的问题:如果我想在准确位置的50英尺范围内保持