1# Copyright 2019 Huawei Technologies Co., Ltd 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# ============================================================================ 15 16import mindspore.context as context 17import mindspore.nn as nn 18from mindspore.common.initializer import initializer 19from mindspore.common.parameter import Parameter 20from mindspore.ops import operations as P 21 22context.set_context(mode=context.GRAPH_MODE, device_target="Ascend") 23 24 25class Net(nn.Cell): 26 def __init__(self): 27 super(Net, self).__init__() 28 self.apply_momentum = P.ApplyMomentum(gradient_scale=1024.0) 29 self.variable = Parameter(initializer( 30 'normal', [2, 3, 3, 4]), name='variable') 31 self.accumulation = Parameter(initializer( 32 'normal', [2, 3, 3, 4]), name='accumulation') 33 self.learning_rate = Parameter(initializer( 34 'normal', [1,]), name='learning_rate') 35 self.gradient = Parameter(initializer( 36 'normal', [2, 3, 3, 4]), name='gradient') 37 self.momentum = Parameter(initializer( 38 'normal', [1,]), name='momentum') 39 40 def construct(self): 41 return self.apply_momentum(self.variable, self.accumulation, self.learning_rate, self.gradient, self.momentum) 42 43 44def test_net(): 45 apply_momentum = Net() 46 output = apply_momentum() 47 print(output.asnumpy()) 48