|
|
|
@@ -14,6 +14,7 @@ |
|
|
|
limitations under the License. |
|
|
|
******************************************************************************/ |
|
|
|
|
|
|
|
using System.Xml.Linq; |
|
|
|
using Tensorflow.Operations; |
|
|
|
using Tensorflow.Operations.Activation; |
|
|
|
using static Tensorflow.Binding; |
|
|
|
@@ -126,6 +127,34 @@ namespace Tensorflow |
|
|
|
name: name, |
|
|
|
exponential_avg_factor: exponential_avg_factor); |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// Normalizes a tensor by `mean` and `variance`, and applies (optionally) a`scale` \\(\gamma\\) to it, as well as an `offset` \\(\beta\\). |
|
|
|
/// </summary> |
|
|
|
/// <param name="x">A floating point tensor.</param> |
|
|
|
/// <param name="mean">A mean `Tensor`.</param> |
|
|
|
/// <param name="variance">A variance `Tensor`.</param> |
|
|
|
/// <param name="offset"> An offset `Tensor`, often denoted \\(\beta\\) in equations, or NULL. If present, will be added to the normalized tensor.</param> |
|
|
|
/// <param name="scale"> A scale `Tensor`, often denoted \\(\gamma\\) in equations, or NULL. If present, the scale is applied to the normalized tensor.</param> |
|
|
|
/// <param name="variance_epsilon"> A small float number to avoid dividing by 0.</param> |
|
|
|
/// <param name="name">A name for this operation.</param> |
|
|
|
/// <returns>the normalized, scaled, offset tensor.</returns> |
|
|
|
public Tensor batch_normalization(Tensor x, |
|
|
|
Tensor mean, |
|
|
|
Tensor variance, |
|
|
|
Tensor offset, |
|
|
|
Tensor scale, |
|
|
|
float variance_epsilon, |
|
|
|
string name = null) |
|
|
|
{ |
|
|
|
var inv = math_ops.rsqrt(variance + variance_epsilon); |
|
|
|
tf_with(ops.name_scope(name, "batchnorm", (x, mean, variance, scale, offset)), scope => |
|
|
|
{ |
|
|
|
if (scale != null) inv *= scale; |
|
|
|
}); |
|
|
|
if (offset != null) return x * math_ops.cast(inv, x.dtype) + math_ops.cast(offset - mean * inv, dtype: x.dtype); |
|
|
|
else return x * math_ops.cast(inv, x.dtype) + math_ops.cast(-mean * inv, dtype: x.dtype); |
|
|
|
} |
|
|
|
|
|
|
|
public Tensor max_pool(Tensor value, int[] ksize, int[] strides, string padding, string data_format = "NHWC", string name = null) |
|
|
|
=> nn_ops.max_pool(value, ksize, strides, padding, data_format: data_format, name: name); |
|
|
|
|
|
|
|
|