Fix bugs: 13BZDF, 138MR1. Support CPU BatchNormGrad

pull/13687/head
yoni 4 years ago
parent d436b9ee98
commit e4695d47d1

@ -28,7 +28,7 @@ def TrainWrap(net, loss_fn=None, optimizer=None, weights=None):
if weights is None: if weights is None:
weights = ParameterTuple(net.trainable_params()) weights = ParameterTuple(net.trainable_params())
if optimizer is None: if optimizer is None:
optimizer = nn.Adam(weights, learning_rate=1e-2, beta1=0.9, beta2=0.999, eps=1e-8, use_locking=False, optimizer = nn.Adam(weights, learning_rate=0.003, beta1=0.9, beta2=0.999, eps=1e-5, use_locking=False,
use_nesterov=False, weight_decay=0.0, loss_scale=1.0) use_nesterov=False, weight_decay=4e-5, loss_scale=1.0)
train_net = nn.TrainOneStepCell(loss_net, optimizer) train_net = nn.TrainOneStepCell(loss_net, optimizer)
return train_net return train_net

@ -159,7 +159,7 @@ int NetRunner::InitDB() {
} }
int NetRunner::TrainLoop() { int NetRunner::TrainLoop() {
struct mindspore::lite::StepLRLambda step_lr_lambda(1, 0.8); struct mindspore::lite::StepLRLambda step_lr_lambda(1, 0.7);
mindspore::lite::LRScheduler step_lr_sched(mindspore::lite::StepLRLambda, static_cast<void *>(&step_lr_lambda), 1); mindspore::lite::LRScheduler step_lr_sched(mindspore::lite::StepLRLambda, static_cast<void *>(&step_lr_lambda), 1);
mindspore::lite::LossMonitor lm(100); mindspore::lite::LossMonitor lm(100);

@ -8,7 +8,7 @@ fi
echo "============Exporting==========" echo "============Exporting=========="
if [ -n "$1" ]; then if [ -n "$1" ]; then
DOCKER_IMG=$1 DOCKER_IMG=$1
rm *.so* rm -f *.so*
docker run -w $PWD --runtime=nvidia -v /home/$USER:/home/$USER --privileged=true ${DOCKER_IMG} /bin/bash -c "python transfer_learning_export.py; chmod 444 transfer_learning_tod*.mindir; rm -rf __pycache__" docker run -w $PWD --runtime=nvidia -v /home/$USER:/home/$USER --privileged=true ${DOCKER_IMG} /bin/bash -c "python transfer_learning_export.py; chmod 444 transfer_learning_tod*.mindir; rm -rf __pycache__"
else else
echo "MindSpore docker was not provided, attempting to run locally" echo "MindSpore docker was not provided, attempting to run locally"

@ -18,7 +18,7 @@
#include <math.h> #include <math.h>
#include <algorithm> #include <algorithm>
#include <vector> #include <vector>
#include <string>
#include <thread> #include <thread>
#include <fstream> #include <fstream>
@ -51,6 +51,12 @@ int BNGradCPUKernel::Execute(int task_id) {
auto *input_scale = in_tensors_.at(2); auto *input_scale = in_tensors_.at(2);
auto *input_mean = in_tensors_.at(3); auto *input_mean = in_tensors_.at(3);
auto *input_var = in_tensors_.at(4); auto *input_var = in_tensors_.at(4);
auto kernel_name = this->name();
if (kernel_name.find("FusedBatchNormGradCPU") != std::string::npos) {
input_mean = in_tensors_.at(4);
input_var = in_tensors_.at(5);
}
auto bn_param = reinterpret_cast<BNGradParameter *>(op_parameter_); auto bn_param = reinterpret_cast<BNGradParameter *>(op_parameter_);
int stage = stage_; int stage = stage_;
int thread_num = thread_num_; int thread_num = thread_num_;

@ -64,11 +64,11 @@ class TransferSession : public lite::TrainSession {
int CompileTransferGraph(); int CompileTransferGraph();
protected: protected:
lite::LiteSession *backbone_session_; lite::LiteSession *backbone_session_ = nullptr;
char *lite_model_; char *lite_model_ = nullptr;
std::vector<mindspore::tensor::MSTensor *> combined_inputs_; std::vector<mindspore::tensor::MSTensor *> combined_inputs_;
std::vector<std::pair<mindspore::tensor::MSTensor *, mindspore::tensor::MSTensor *>> backbone_head_map_; std::vector<std::pair<mindspore::tensor::MSTensor *, mindspore::tensor::MSTensor *>> backbone_head_map_;
bool is_valid_; bool is_valid_ = false;
private: private:
bool CompileFormatTransform(tensor::MSTensor *out, tensor::MSTensor *in, int *mask); bool CompileFormatTransform(tensor::MSTensor *out, tensor::MSTensor *in, int *mask);

Loading…
Cancel
Save