@flow.global_function(type='train', function_config=func_config)
def ReduceMeanJob():
    with flow.scope.placement(device_type, '0:0'):
        x = flow.get_variable('x', shape=input_shape, dtype=flow.float, initializer=flow.random_uniform_initializer(minval=(- 10), maxval=10), trainable=True)
        loss = flow.math.reduce_mean(x, axis=axis, keepdims=keepdims)
        loss = flow.identity(loss)
        flow.optimizer.SGD(flow.optimizer.PiecewiseConstantScheduler([], [0.0001]), momentum=0).minimize(loss)
        flow.watch(x, test_global_storage.Setter('x'))
        flow.watch_diff(x, test_global_storage.Setter('x_diff'))
        flow.watch(loss, test_global_storage.Setter('loss'))
        flow.watch_diff(loss, test_global_storage.Setter('loss_diff'))
        return loss
@flow.global_function(type='train', function_config=func_config)
def ReduceMeanJob():
    with flow.scope.placement(device_type, '0:0'):
        x = flow.get_variable('x', shape=input_shape, dtype=flow.float, initializer=flow.random_uniform_initializer(minval=(- 10), maxval=10), trainable=True)
        loss = flow.math.reduce_mean(x, axis=axis, keepdims=keepdims)
        loss = flow.identity(loss)
        flow.optimizer.SGD(flow.optimizer.PiecewiseConstantScheduler([], [0.0001]), momentum=0).minimize(loss)
        flow.watch(x, test_global_storage.Setter('x'))
        flow.watch_diff(x, test_global_storage.Setter('x_diff'))
        flow.watch(loss, test_global_storage.Setter('loss'))
        flow.watch_diff(loss, test_global_storage.Setter('loss_diff'))
        return loss