From 0ec2ec7f903a1640647cf7ad512a2ff8943baea0 Mon Sep 17 00:00:00 2001 From: lanmeng <497776945@qq.com> Date: Sat, 16 Oct 2021 00:33:28 +0800 Subject: [PATCH] add api tensorflow_probability_diff bijector.Softplus add tensorflow_probability_diff for bijector.softplus change --- .../api_mapping/tensorflow_api_mapping.md | 8 ++ .../BijectorSoftplus.md | 88 +++++++++++++++++++ .../api_mapping/tensorflow_api_mapping.md | 6 ++ .../BijectorSoftplus.md | 88 +++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md create mode 100644 docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md diff --git a/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_api_mapping.md b/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_api_mapping.md index ca1fce5b6e..c7fddf8c8f 100644 --- a/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_api_mapping.md +++ b/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_api_mapping.md @@ -79,3 +79,11 @@ Mapping between TensorFlow APIs and MindSpore APIs, which is provided by the com | [tf.zeros_like](http://www.tensorflow.org/versions/r1.15/api_docs/python/tf/zeros_like) |[mindspore.ops.ZerosLike](https://mindspore.cn/docs/api/en/master/api_python/ops/mindspore.ops.ZerosLike.html) | same | | [tf.distribute.Strategy](http://www.tensorflow.org/versions/r1.15/api_docs/python/tf/distribute/Strategy) |[context.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL)](https://mindspore.cn/docs/api/zh-CN/master/api_python/mindspore.context.html#mindspore.context.set_auto_parallel_context) | [diff](https://www.mindspore.cn/docs/migration_guide/en/master/api_mapping/tensorflow_diff/DistributedTrain.html)| +## TensorFlow Probability and MindSpore + +Mapping between TensorFlow Probability APIs and MindSpore APIs, which is provided by the community. + +| TensorFlow Probability 0.14.1 APIs | MindSpore APIs | Description | +|-----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| +| [tfp.bijectors.Softplus](http://www.tensorflow.org/probability/api_docs/python/tfp/bijectors/Softplus) |[mindspore.nn.probability.bijector.Softplus](https://www.mindspore.cn/docs/api/en/master/api_python/nn_probability/mindspore.nn.probability.bijector.Softplus.html) |[diff](https://www.mindspore.cn/docs/migration_guide/en/master/api_mapping/tensorflow_probability_diff/BijectorSoftplus.html)| + diff --git a/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md b/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md new file mode 100644 index 0000000000..268990a73b --- /dev/null +++ b/docs/mindspore/migration_guide/source_en/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md @@ -0,0 +1,88 @@ +# Function Differences with tfp.bijectors.Softplus + + + +## tfp.bijectors.Softplus + +```python +class tfp.bijectors.Softplus( + hinge_softness=None, + low=None, + validate_args=False, + name='softplus' +) +``` + +For more information, see [tfp.bijectors.Softplus](http://www.tensorflow.org/probability/api_docs/python/tfp/bijectors/Softplus). + +## mindspore.nn.probability.bijector.Softplus + +```python +class mindspore.nn.probability.bijector.Softplus( + sharpness=1.0, + name="Softplus" +) +``` + +For more information, see [mindspore.nn.probability.bijector.Softplus](https://www.mindspore.cn/docs/api/en/master/api_python/nn_probability/mindspore.nn.probability.bijector.Softplus.html). + +## Differences + +TensorFlow: The formula: $Y = c\*g(X/c) = c\*Log[1 + exp(X/c)] $, hinge_softness = c. + +MindSpore:The formula: $Y = g(X) = log(1 + e ^ {kX}) / k $, sharpness = k. Therefore, when sharpness = 1.0/hinge_softness, the calculation results of MindSpore and TensorFlow are equal. + +## Code Example + +```python +# The following implements bijector.Softplus with MindSpore. +import tensorflow as tf +import tensorflow_probability.python as tfp +import mindspore +import mindspore.nn as nn +from mindspore import Tensor +import mindspore.nn.probability.bijector as msb + +# To initialize a Softplus bijector of sharpness 2.0. +softplus = msb.Softplus(2.0) +value = Tensor([2], dtype=mindspore.float32) +ans1 = softplus.forward(value) +print(ans1) +#Out: +#[2.009075] +ans2 = softplus.inverse(value) +print(ans2) +#Out: +#[1.9907573] +ans3 = softplus.forward_log_jacobian(value) +print(ans3) +#Out: +#[-0.01814996] +ans4 = softplus.inverse_log_jacobian(value) +print(ans4) +#Out: +#[0.01848531] + + +# The following implements bijectors.Softplus with TensorFlow_Probability. +value_tf = tf.constant([2], dtype=tf.float32) +# sharpness = 2.0, sharpness = 1./hinge_softness, so hinge_softness = 0.5 +output = tfp.bijectors.Softplus(0.5) +out1 = output.forward(value_tf) +out2 = output.inverse(value_tf) +out3 = output.forward_log_det_jacobian(value_tf, event_ndims=0) +out4 = output.inverse_log_det_jacobian(value_tf, event_ndims=0) +ss = tf.Session() +ss.run(out1) +# out1 +# array([2.009075], dtype=float32) +ss.run(out2) +# out2 +# array([1.9907573], dtype=float32) +ss.run(out3) +# out3 +# array([-0.01814996], dtype=float32) +ss.run(out4) +# out4 +# array([0.01848542], dtype=float32) +``` diff --git a/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_api_mapping.md b/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_api_mapping.md index d22da72bc1..f211e5570d 100644 --- a/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_api_mapping.md +++ b/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_api_mapping.md @@ -79,4 +79,10 @@ | [tf.zeros_like](http://www.tensorflow.org/versions/r1.15/api_docs/python/tf/zeros_like) |[mindspore.ops.ZerosLike](https://mindspore.cn/docs/api/zh-CN/master/api_python/ops/mindspore.ops.ZerosLike.html) | 功能一致 | | [tf.distribute.Strategy](http://www.tensorflow.org/versions/r1.15/api_docs/python/tf/distribute/Strategy) |[context.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL)](https://mindspore.cn/docs/api/zh-CN/master/api_python/mindspore.context.html#mindspore.context.set_auto_parallel_context) | [差异对比](https://www.mindspore.cn/docs/migration_guide/zh-CN/master/api_mapping/tensorflow_diff/DistributedTrain.html)| +## TensorFlow Probability与MindSpore +由社区提供的TensorFlow Probability APIs和MindSpore APIs之间的映射。 + +| TensorFlow Probability 0.14.1 APIs | MindSpore APIs | 说明 | +|-----------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------| +| [tfp.bijectors.Softplus](http://www.tensorflow.org/probability/api_docs/python/tfp/bijectors/Softplus) |[mindspore.nn.probability.bijector.Softplus](https://www.mindspore.cn/docs/api/zh-CN/master/api_python/nn_probability/mindspore.nn.probability.bijector.Softplus.html)|[差异对比](https://www.mindspore.cn/docs/migration_guide/zh-CN/master/api_mapping/tensorflow_probability_diff/BijectorSoftplus.html)| diff --git a/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md b/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md new file mode 100644 index 0000000000..1efdcef076 --- /dev/null +++ b/docs/mindspore/migration_guide/source_zh_cn/api_mapping/tensorflow_probability_diff/BijectorSoftplus.md @@ -0,0 +1,88 @@ +# 比较与tfp.bijectors.Softplus的功能差异 + + + +## tfp.bijectors.Softplus + +```python +class tfp.bijectors.Softplus( + hinge_softness=None, + low=None, + validate_args=False, + name='softplus' +) +``` + +更多内容详见[tfp.bijectors.Softplus](http://www.tensorflow.org/probability/api_docs/python/tfp/bijectors/Softplus)。 + +## mindspore.nn.probability.bijector.Softplus + +```python +class mindspore.nn.probability.bijector.Softplus( + sharpness=1.0, + name="Softplus" +) +``` + +更多内容详见[mindspore.nn.probability.bijector.Softplus](https://www.mindspore.cn/docs/api/zh-CN/master/api_python/nn_probability/mindspore.nn.probability.bijector.Softplus.html)。 + +## 使用方式 + +TensorFlow:公式:$Y = c\*g(X/c) = c\*Log[1 + exp(X/c)] $,hinge_softness = c。 + +MindSpore:公式:$Y = g(X) = log(1 + e ^ {kX}) / k $,sharpness = k。所以当sharpness = 1.0/hinge_softness的时候,MindSpore与TensorFlow的计算结果是一致的。 + +## 代码示例 + +```python +# The following implements bijector.Softplus with MindSpore. +import tensorflow as tf +import tensorflow_probability.python as tfp +import mindspore +import mindspore.nn as nn +from mindspore import Tensor +import mindspore.nn.probability.bijector as msb + +# To initialize a Softplus bijector of sharpness 2.0. +softplus = msb.Softplus(2.0) +value = Tensor([2], dtype=mindspore.float32) +ans1 = softplus.forward(value) +print(ans1) +#Out: +#[2.009075] +ans2 = softplus.inverse(value) +print(ans2) +#Out: +#[1.9907573] +ans3 = softplus.forward_log_jacobian(value) +print(ans3) +#Out: +#[-0.01814996] +ans4 = softplus.inverse_log_jacobian(value) +print(ans4) +#Out: +#[0.01848531] + + +# The following implements bijectors.Softplus with TensorFlow_Probability. +value_tf = tf.constant([2], dtype=tf.float32) +# sharpness = 2.0, sharpness = 1./hinge_softness, so hinge_softness = 0.5 +output = tfp.bijectors.Softplus(0.5) +out1 = output.forward(value_tf) +out2 = output.inverse(value_tf) +out3 = output.forward_log_det_jacobian(value_tf, event_ndims=0) +out4 = output.inverse_log_det_jacobian(value_tf, event_ndims=0) +ss = tf.Session() +ss.run(out1) +# out1 +# array([2.009075], dtype=float32) +ss.run(out2) +# out2 +# array([1.9907573], dtype=float32) +ss.run(out3) +# out3 +# array([-0.01814996], dtype=float32) +ss.run(out4) +# out4 +# array([0.01848542], dtype=float32) +``` -- Gitee