@@ -15,10 +15,12 @@ namespace Tensorflow | |||
public static variable_scope variable_scope(string name, | |||
string default_name = null, | |||
Tensor[] values = null, | |||
bool auxiliary_name_scope = true) => new variable_scope(name, | |||
default_name, | |||
bool? reuse = null, | |||
bool auxiliary_name_scope = true) => new variable_scope(name, | |||
default_name, | |||
values, | |||
auxiliary_name_scope); | |||
reuse: reuse, | |||
auxiliary_name_scope: auxiliary_name_scope); | |||
public static variable_scope variable_scope(VariableScope scope, | |||
string default_name = null, | |||
@@ -27,7 +29,8 @@ namespace Tensorflow | |||
bool auxiliary_name_scope = true) => new variable_scope(scope, | |||
default_name, | |||
values, | |||
auxiliary_name_scope); | |||
reuse: reuse, | |||
auxiliary_name_scope: auxiliary_name_scope); | |||
public static IInitializer truncated_normal_initializer(float mean = 0.0f, | |||
float stddev = 1.0f, | |||
@@ -108,11 +108,11 @@ namespace Tensorflow.Keras.Layers | |||
// Build layer if applicable (if the `build` method has been | |||
// overridden). | |||
_maybe_build(inputs[0]); | |||
}); | |||
outputs = call(inputs[0], training: training); | |||
_handle_activity_regularization(inputs[0], outputs); | |||
_set_mask_metadata(inputs[0], outputs, null); | |||
outputs = call(inputs[0], training: training); | |||
_handle_activity_regularization(inputs[0], outputs); | |||
_set_mask_metadata(inputs[0], outputs, null); | |||
}); | |||
} | |||
return outputs; | |||
@@ -48,6 +48,7 @@ namespace Tensorflow.Layers | |||
else | |||
{ | |||
scope_context_manager = tf.variable_scope(_scope, | |||
reuse: _reuse, | |||
auxiliary_name_scope: false); | |||
} | |||
@@ -123,34 +124,33 @@ namespace Tensorflow.Layers | |||
_set_scope(); | |||
var reuse = built || (_reuse != null && _reuse.Value); | |||
return Python.with(tf.variable_scope(_scope, | |||
reuse: reuse, | |||
return with(tf.variable_scope(_scope, | |||
reuse: reuse, | |||
auxiliary_name_scope: false), scope => | |||
{ | |||
_current_scope = scope; | |||
return Python.with(ops.name_scope(_name_scope()), delegate | |||
{ | |||
var variable = base.add_weight(name, | |||
shape, | |||
dtype: dtype, | |||
initializer: initializer, | |||
trainable: trainable, | |||
getter: (name1, shape1, dtype1, initializer1, trainable1) => | |||
{ | |||
return tf.get_variable(name1, | |||
shape: new TensorShape(shape1), | |||
dtype: dtype1, | |||
initializer: initializer1, | |||
trainable: trainable1); | |||
}); | |||
if(init_graph != null) | |||
_current_scope = scope; | |||
return with(ops.name_scope(_name_scope()), delegate | |||
{ | |||
var trainable_variables = variables.trainable_variables(); | |||
} | |||
return variable; | |||
var variable = base.add_weight(name, | |||
shape, | |||
dtype: dtype, | |||
initializer: initializer, | |||
trainable: trainable, | |||
getter: (name1, shape1, dtype1, initializer1, trainable1) => | |||
{ | |||
return tf.get_variable(name1, | |||
shape: new TensorShape(shape1), | |||
dtype: dtype1, | |||
initializer: initializer1, | |||
trainable: trainable1); | |||
}); | |||
//if (init_graph != null) | |||
//var trainable_variables = variables.trainable_variables(); | |||
return variable; | |||
}); | |||
}); | |||
}); | |||
} | |||
@@ -5,6 +5,9 @@ using static Tensorflow.Python; | |||
namespace Tensorflow.Operations | |||
{ | |||
/// <summary> | |||
/// Performs the max pooling on the input. | |||
/// </summary> | |||
public class MaxPoolFunction : IPoolFunction | |||
{ | |||
public Tensor Apply(Tensor value, | |||
@@ -14,8 +17,9 @@ namespace Tensorflow.Operations | |||
string data_format = "NHWC", | |||
string name = null) | |||
{ | |||
return with(ops.name_scope(name, "MaxPool", new { value }), scope => { | |||
return with(ops.name_scope(name, "MaxPool", value), scope => | |||
{ | |||
name = scope; | |||
value = ops.convert_to_tensor(value, name: "input"); | |||
return gen_nn_ops.max_pool( | |||
value, | |||
@@ -5,7 +5,7 @@ | |||
<AssemblyName>TensorFlow.NET</AssemblyName> | |||
<RootNamespace>Tensorflow</RootNamespace> | |||
<TargetTensorFlow>1.14.0</TargetTensorFlow> | |||
<Version>0.8.0</Version> | |||
<Version>0.8.1</Version> | |||
<Authors>Haiping Chen</Authors> | |||
<Company>SciSharp STACK</Company> | |||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | |||
@@ -17,15 +17,12 @@ | |||
<PackageTags>TensorFlow, NumSharp, SciSharp, MachineLearning, TensorFlow.NET, C#</PackageTags> | |||
<Description>Google's TensorFlow full binding in .NET Standard. | |||
Docs: https://tensorflownet.readthedocs.io</Description> | |||
<AssemblyVersion>0.8.0.0</AssemblyVersion> | |||
<PackageReleaseNotes>Changes since v0.7: | |||
<AssemblyVersion>0.8.1.0</AssemblyVersion> | |||
<PackageReleaseNotes>Changes since v0.8: | |||
Add XOR example. | |||
Add KMeans example. | |||
Add Object Detection example. | |||
Add Word2Vec example.</PackageReleaseNotes> | |||
Removed global static graph instance.</PackageReleaseNotes> | |||
<LangVersion>7.2</LangVersion> | |||
<FileVersion>0.8.0.0</FileVersion> | |||
<FileVersion>0.8.1.0</FileVersion> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> | |||
@@ -107,7 +107,7 @@ namespace Tensorflow | |||
if (_name != null || _scope != null) | |||
{ | |||
var name_scope = _name == null ? _scope.name.Split('/').Last() : _name; | |||
if (name_scope != null || current_name_scope != null) | |||
if (current_name_scope == null) | |||
current_name_scope = ops.name_scope(name_scope); | |||
current_name_scope.__enter__(); | |||
var current_name_scope_name = current_name_scope; | |||
@@ -174,7 +174,8 @@ namespace TensorFlowNET.Examples | |||
x_emb = tf.expand_dims(x_emb, -1); | |||
}); | |||
for(int len = 0; len < filter_sizes.Rank; len++) | |||
var pooled_outputs = new List<Tensor>(); | |||
for (int len = 0; len < filter_sizes.Rank; len++) | |||
{ | |||
int filter_size = filter_sizes.GetLength(len); | |||
var conv = tf.layers.conv2d( | |||
@@ -190,8 +191,11 @@ namespace TensorFlowNET.Examples | |||
pool_size: new[] { document_max_len - filter_size + 1, 1 }, | |||
strides: new[] { 1, 1 }, | |||
padding: "VALID"); | |||
pooled_outputs.Add(pool); | |||
} | |||
// var h_pool = tf.concat(pooled_outputs, 3); | |||
return graph; | |||
} | |||