提交 708f9dcf 编写于 作者: G gaoyuan

update mobilenet ssd

上级 46b5c460
...@@ -5,6 +5,7 @@ import paddle.fluid as fluid ...@@ -5,6 +5,7 @@ import paddle.fluid as fluid
from paddle.fluid.initializer import MSRA from paddle.fluid.initializer import MSRA
from paddle.fluid.param_attr import ParamAttr from paddle.fluid.param_attr import ParamAttr
import reader import reader
import numpy as np
parameter_attr = ParamAttr(initializer=MSRA()) parameter_attr = ParamAttr(initializer=MSRA())
...@@ -234,19 +235,19 @@ def train(train_file_list, ...@@ -234,19 +235,19 @@ def train(train_file_list,
mbox_locs, mbox_confs, box, box_var = mobile_net(image, image_shape) mbox_locs, mbox_confs, box, box_var = mobile_net(image, image_shape)
nmsed_out = fluid.layers.detection_output(mbox_locs, mbox_confs, box, nmsed_out = fluid.layers.detection_output(mbox_locs, mbox_confs, box,
box_var) box_var)
loss = fluid.layers.ssd_loss(mbox_locs, mbox_confs, gt_box, gt_label, box, loss_vec = fluid.layers.ssd_loss(mbox_locs, mbox_confs, gt_box, gt_label,
box_var) box, box_var)
avg_loss = fluid.layers.mean(x=loss) loss = fluid.layers.nn.reduce_sum(loss_vec)
optimizer = fluid.optimizer.Momentum( optimizer = fluid.optimizer.Momentum(
learning_rate=fluid.learning_rate_decay.exponential_decay( learning_rate=fluid.learning_rate_decay.exponential_decay(
learning_rate=learning_rate, learning_rate=learning_rate,
global_step=global_step,
decay_steps=40000, decay_steps=40000,
decay_rate=0.1, decay_rate=0.1,
staircase=True), staircase=True),
momentum=0.9, momentum=0.9,
regularization=fluid.regularizer.L2Decay(5 * 1e-5)) regularization=fluid.regularizer.L2Decay(5 * 1e-5), )
opts = optimizer.minimize(avg_loss) opts = optimizer.minimize(loss)
place = fluid.CUDAPlace(0) place = fluid.CUDAPlace(0)
exe = fluid.Executor(place) exe = fluid.Executor(place)
...@@ -260,12 +261,13 @@ def train(train_file_list, ...@@ -260,12 +261,13 @@ def train(train_file_list,
for pass_id in range(num_passes): for pass_id in range(num_passes):
for batch_id, data in enumerate(train_reader()): for batch_id, data in enumerate(train_reader()):
avg_loss_v = exe.run(fluid.default_main_program(), loss_v = exe.run(fluid.default_main_program(),
feed=feeder.feed(data), feed=feeder.feed(data),
fetch_list=[avg_loss]) fetch_list=[loss])
if batch_id % 50 == 0:
print("Pass {0}, batch {1}, loss {2}".format(pass_id, batch_id, print("Pass {0}, batch {1}, loss {2}".format(pass_id, batch_id,
avg_loss_v[0])) np.sum(loss_v)))
if pass_id % 10 == 0: if pass_id % 1 == 0:
model_path = os.path.join(model_save_dir, str(pass_id)) model_path = os.path.join(model_save_dir, str(pass_id))
print 'save models to %s' % (model_path) print 'save models to %s' % (model_path)
fluid.io.save_inference_model(model_path, ['image'], [nmsed_out], fluid.io.save_inference_model(model_path, ['image'], [nmsed_out],
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册