@@ -27,6 +27,37 @@ namespace Tensorflow | |||||
public List<Tensor> _graph_parents {get;set;} | public List<Tensor> _graph_parents {get;set;} | ||||
public string _name {get;set;} | public string _name {get;set;} | ||||
/// <summary> | |||||
/// Log probability density/mass function. | |||||
/// </summary> | |||||
/// <param name="value"> `Tensor`.</param> | |||||
/// <param name="name"> Python `str` prepended to names of ops created by this function.</param> | |||||
/// <returns>log_prob: a `Tensor` of shape `sample_shape(x) + self.batch_shape` with values of type `self.dtype`.</returns> | |||||
/* | |||||
public Tensor log_prob(Tensor value, string name = "log_prob") | |||||
{ | |||||
return _call_log_prob(value, name); | |||||
} | |||||
private Tensor _call_log_prob (Tensor value, string name) | |||||
{ | |||||
with(ops.name_scope(name, "moments", new { value }), scope => | |||||
{ | |||||
value = _convert_to_tensor(value, "value", _dtype); | |||||
}); | |||||
throw new NotImplementedException(); | |||||
} | |||||
private Tensor _convert_to_tensor(Tensor value, string name = null, TF_DataType preferred_dtype) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
*/ | |||||
/// <summary> | /// <summary> | ||||
/// Constructs the `Distribution' | /// Constructs the `Distribution' | ||||
/// **This is a private method for subclass use.** | /// **This is a private method for subclass use.** | ||||
@@ -47,7 +78,7 @@ namespace Tensorflow | |||||
/// <param name = "name"> Name prefixed to Ops created by this class. Default: subclass name.</param> | /// <param name = "name"> Name prefixed to Ops created by this class. Default: subclass name.</param> | ||||
/// <returns> Two `Tensor` objects: `mean` and `variance`.</returns> | /// <returns> Two `Tensor` objects: `mean` and `variance`.</returns> | ||||
/* | |||||
/* | |||||
private Distribution ( | private Distribution ( | ||||
TF_DataType dtype, | TF_DataType dtype, | ||||
ReparameterizationType reparameterization_type, | ReparameterizationType reparameterization_type, | ||||
@@ -66,6 +97,10 @@ namespace Tensorflow | |||||
this._name = name; | this._name = name; | ||||
} | } | ||||
*/ | */ | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -78,5 +78,19 @@ namespace Tensorflow | |||||
return array_ops.broadcast_static_shape(new Tensor(_loc.shape), new Tensor(_scale.shape)); | return array_ops.broadcast_static_shape(new Tensor(_loc.shape), new Tensor(_scale.shape)); | ||||
} | } | ||||
private Tensor _log_prob(Tensor x) | |||||
{ | |||||
return _log_unnormalized_prob(_z(x)); | |||||
} | |||||
private Tensor _log_unnormalized_prob (Tensor x) | |||||
{ | |||||
return -0.5 * math_ops.square(_z(x)); | |||||
} | |||||
private Tensor _z (Tensor x) | |||||
{ | |||||
return (x - this._loc) / this._scale; | |||||
} | |||||
} | } | ||||
} | } |
@@ -55,6 +55,11 @@ namespace Tensorflow | |||||
return m; | return m; | ||||
} | } | ||||
public static Tensor square(Tensor x, string name = null) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
/// <summary> | /// <summary> | ||||
/// Helper function for reduction ops. | /// Helper function for reduction ops. | ||||
/// </summary> | /// </summary> | ||||
@@ -15,13 +15,10 @@ namespace TensorFlowNET.Examples | |||||
public void Run() | public void Run() | ||||
{ | { | ||||
np.array<float>(1.0f, 1.0f); | np.array<float>(1.0f, 1.0f); | ||||
// var X = np.array<float>(np.array<float>(1.0f, 1.0f), np.array<float>(2.0f, 2.0f), np.array<float>(1.0f, -1.0f), np.array<float>(2.0f, -2.0f), np.array<float>(-1.0f, -1.0f), np.array<float>(-1.0f, 1.0f),); | |||||
// var X = np.array<float[]>(new float[][] { new float[] { 1.0f, 1.0f}, new float[] { 2.0f, 2.0f }, new float[] { -1.0f, -1.0f }, new float[] { -2.0f, -2.0f }, new float[] { 1.0f, -1.0f }, new float[] { 2.0f, -2.0f }, }); | |||||
var X = np.array<float>(new float[][] { new float[] { 1.0f, 1.0f }, new float[] { 2.0f, 2.0f }, new float[] { -1.0f, -1.0f }, new float[] { -2.0f, -2.0f }, new float[] { 1.0f, -1.0f }, new float[] { 2.0f, -2.0f }, }); | var X = np.array<float>(new float[][] { new float[] { 1.0f, 1.0f }, new float[] { 2.0f, 2.0f }, new float[] { -1.0f, -1.0f }, new float[] { -2.0f, -2.0f }, new float[] { 1.0f, -1.0f }, new float[] { 2.0f, -2.0f }, }); | ||||
var y = np.array<int>(0,0,1,1,2,2); | var y = np.array<int>(0,0,1,1,2,2); | ||||
fit(X, y); | fit(X, y); | ||||
// Create a regular grid and classify each point | // Create a regular grid and classify each point | ||||
} | } | ||||
public void fit(NDArray X, NDArray y) | public void fit(NDArray X, NDArray y) | ||||