本文整理汇总了C++中NDArray::GetHandle方法的典型用法代码示例。如果您正苦于以下问题:C++ NDArray::GetHandle方法的具体用法?C++ NDArray::GetHandle怎么用?C++ NDArray::GetHandle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NDArray
的用法示例。
在下文中一共展示了NDArray::GetHandle方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Update
inline void SGDOptimizer::Update(int index, NDArray weight, NDArray grad) {
if (states_.count(index) == 0) {
CreateState_(index, weight);
}
params_["lr"] = std::to_string(GetLR_(index));
params_["wd"] = std::to_string(GetWD_(index));
UpdateCount_(index);
auto keys = GetParamKeys_();
auto values = GetParamValues_();
CHECK_EQ(keys.size(), values.size());
NDArrayHandle inputs[3];
inputs[0] = weight.GetHandle();
inputs[1] = grad.GetHandle();
int num_outputs = 1;
NDArrayHandle output = weight.GetHandle();
NDArrayHandle *outputs = &output;
if (states_[index] == nullptr) {
MXImperativeInvoke(update_handle_, 2, inputs,
&num_outputs, &outputs,
keys.size(), keys.data(), values.data());
} else {
inputs[2] = states_[index]->GetHandle();
MXImperativeInvoke(mom_update_handle_, 3, inputs,
&num_outputs, &outputs,
keys.size(), keys.data(), values.data());
}
}
示例2: Update
void Optimizer::Update(int index, NDArray weight, NDArray grad) {
if (!init_) {
std::vector<const char *> param_keys;
std::vector<const char *> param_values;
for (const auto &k_v : params_) {
param_keys.push_back(k_v.first.c_str());
param_values.push_back(k_v.second.c_str());
}
MXOptimizerCreateOptimizer(creator_, params_.size(), param_keys.data(),
param_values.data(), &handle_);
init_ = true;
}
MXOptimizerUpdate(handle_, index, weight.GetHandle(), grad.GetHandle(),
learning_rate_, weight_decay_);
}