diff --git a/src/TensorFlowNET.Core/APIs/tf.variable.cs b/src/TensorFlowNET.Core/APIs/tf.variable.cs
index 266d5799..a1b3e1d8 100644
--- a/src/TensorFlowNET.Core/APIs/tf.variable.cs
+++ b/src/TensorFlowNET.Core/APIs/tf.variable.cs
@@ -23,6 +23,8 @@ namespace Tensorflow
TF_DataType dtype = TF_DataType.DtInvalid,
object initializer = null, // IInitializer or Tensor
bool? trainable = null,
+ bool? use_resource = null,
+ bool validate_shape = true,
VariableSynchronization synchronization = VariableSynchronization.Auto,
VariableAggregation aggregation = VariableAggregation.None)
{
@@ -32,6 +34,8 @@ namespace Tensorflow
name,
shape: shape,
dtype: dtype,
+ use_resource: use_resource,
+ validate_shape: validate_shape,
initializer: initializer,
trainable: trainable);
}
diff --git a/src/TensorFlowNET.Core/Train/AdamOptimizer.cs b/src/TensorFlowNET.Core/Train/AdamOptimizer.cs
index 9d3cab19..e4e01c77 100644
--- a/src/TensorFlowNET.Core/Train/AdamOptimizer.cs
+++ b/src/TensorFlowNET.Core/Train/AdamOptimizer.cs
@@ -73,7 +73,8 @@ namespace Tensorflow.Train
// Create slots for the first and second moments.
foreach(var v in var_list)
{
- _zero_slot(v, "m", Name);
+ _zeros_slot(v, "m", Name);
+ _zeros_slot(v, "v", Name);
}
}
diff --git a/src/TensorFlowNET.Core/Train/Optimizer.cs b/src/TensorFlowNET.Core/Train/Optimizer.cs
index cc61c48b..d5c1f5c1 100644
--- a/src/TensorFlowNET.Core/Train/Optimizer.cs
+++ b/src/TensorFlowNET.Core/Train/Optimizer.cs
@@ -21,7 +21,8 @@ namespace Tensorflow
public static int GATE_OP = 1;
public static int GATE_GRAPH = 2;
- public string Name { get; set; }
+ string _name;
+ public string Name => _name;
public float LearningRate { get; set; }
public Tensor LearningRateTensor { get; set; }
public bool _use_locking;
@@ -35,7 +36,7 @@ namespace Tensorflow
if (String.IsNullOrEmpty(name))
throw new NotImplementedException("Must specify the optimizer name");
- Name = name;
+ _name = name;
_use_locking = use_locking;
LearningRate = learning_rate;
// Dictionary of slots.
@@ -391,22 +392,34 @@ namespace Tensorflow
///
///
///
- protected RefVariable _zero_slot(RefVariable var, string slot_name, string op_name)
+ protected RefVariable _zeros_slot(RefVariable var, string slot_name, string op_name)
{
var named_slots = _slot_dict(slot_name);
if (!named_slots.ContainsKey(_var_key(var)))
{
var new_slot_variable = slot_creator.create_zeros_slot(var, op_name);
+ _restore_slot_variable(slot_name: slot_name, variable: var, slot_variable: new_slot_variable);
+ named_slots[_var_key(var)] = new_slot_variable;
}
return named_slots[_var_key(var)];
}
+ ///
+ /// Restore a newly created slot variable's value.
+ ///
+ protected void _restore_slot_variable(string slot_name, RefVariable variable, RefVariable slot_variable)
+ {
+ var variable_key = _var_key(variable);
+ // TODO
+ }
+
protected Dictionary _slot_dict(string slot_name)
{
var named_slots = _slots.ContainsKey(slot_name) ? _slots[slot_name] : null;
if(named_slots == null)
{
- _slots[slot_name] = new Dictionary();
+ named_slots = new Dictionary();
+ _slots[slot_name] = named_slots;
}
return named_slots;
diff --git a/src/TensorFlowNET.Core/Train/SlotCreator.cs b/src/TensorFlowNET.Core/Train/SlotCreator.cs
index 1ee8f774..a666cae0 100644
--- a/src/TensorFlowNET.Core/Train/SlotCreator.cs
+++ b/src/TensorFlowNET.Core/Train/SlotCreator.cs
@@ -43,7 +43,7 @@ namespace Tensorflow.Train
{
var validate_shape = shape.is_fully_defined();
var prefix = primary.op.name;
- return with(new variable_scope(prefix + "/" + name), delegate
+ return with(new variable_scope(string.Empty, prefix + "/" + name), delegate
{
return _create_slot_var(primary, initializer, "", validate_shape, shape, dtype);
});
@@ -62,11 +62,11 @@ namespace Tensorflow.Train
private RefVariable _create_slot_var(VariableV1 primary, IInitializer val, string scope, bool validate_shape,
TensorShape shape, TF_DataType dtype)
{
- bool use_resource = primary is RefVariable;
+ bool use_resource = primary is ResourceVariable;
if (resource_variable_ops.is_resource_variable(primary))
use_resource = true;
- var slot = variable_scope.get_variable(
+ var slot = tf.get_variable(
scope,
initializer: val,
trainable: false,
diff --git a/src/TensorFlowNET.Core/Variables/VariableScope.cs b/src/TensorFlowNET.Core/Variables/VariableScope.cs
index 60cd7777..d9816af3 100644
--- a/src/TensorFlowNET.Core/Variables/VariableScope.cs
+++ b/src/TensorFlowNET.Core/Variables/VariableScope.cs
@@ -37,6 +37,8 @@ namespace Tensorflow
TF_DataType dtype = TF_DataType.DtInvalid,
object initializer = null, // IInitializer or Tensor
bool? trainable = null,
+ bool? use_resource = null,
+ bool validate_shape = true,
VariableSynchronization synchronization = VariableSynchronization.Auto,
VariableAggregation aggregation= VariableAggregation.None)
{
diff --git a/src/TensorFlowNET.Core/Variables/variable_scope.py.cs b/src/TensorFlowNET.Core/Variables/variable_scope.py.cs
index 0482daa6..b84196a3 100644
--- a/src/TensorFlowNET.Core/Variables/variable_scope.py.cs
+++ b/src/TensorFlowNET.Core/Variables/variable_scope.py.cs
@@ -104,7 +104,7 @@ namespace Tensorflow
current_name_scope = ops.name_scope(name_scope);
}
- if (_name != null || _scope != null)
+ if (!string.IsNullOrEmpty(_name) || _scope != null)
{
var name_scope = _scope.name.Split('/').Last();
if (current_name_scope == null)
diff --git a/tensorflowlib/README.md b/tensorflowlib/README.md
index 21b14b72..00fbb339 100644
--- a/tensorflowlib/README.md
+++ b/tensorflowlib/README.md
@@ -3,12 +3,12 @@ TensorFlow.NET pack all required libraries in architecture-specific assemblies f
Here are some pre-built TensorFlow binaries you can use for each platform:
- Linux
- - CPU-only: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-linux-x86_64-1.13.1.tar.gz
- - GPU-enabled: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-linux-x86_64-1.13.1.tar.gz
-- Mac: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-darwin-x86_64-1.13.1.tar.gz
+ - CPU-only: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-linux-x86_64-1.14.0.tar.gz
+ - GPU-enabled: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-linux-x86_64-1.14.0.tar.gz
+- Mac: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-darwin-x86_64-1.14.0.tar.gz
- Windows
- - CPU-only: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-windows-x86_64-1.13.1.zip
- - GPU-enabled: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-windows-x86_64-1.13.1.zip
+ - CPU-only: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-windows-x86_64-1.14.0.zip
+ - GPU-enabled: https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-windows-x86_64-1.14.0.zip
### Run in Linux
@@ -41,7 +41,7 @@ pacman -S git patch unzip
4. Install from local wheel file.
-`pip install C:/tmp/tensorflow_pkg/tensorflow-1.13.0-cp36-cp36m-win_amd64.whl`
+`pip install C:/tmp/tensorflow_pkg/tensorflow-1.14.0-cp36-cp36m-win_amd64.whl`
### Export more APIs
diff --git a/tensorflowlib/runtimes/win-x64/native/tensorflow.dll b/tensorflowlib/runtimes/win-x64/native/tensorflow.dll
index d4c2474c..0a854ec6 100644
Binary files a/tensorflowlib/runtimes/win-x64/native/tensorflow.dll and b/tensorflowlib/runtimes/win-x64/native/tensorflow.dll differ
diff --git a/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj b/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj
index 9f4e473d..e399bc82 100644
--- a/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj
+++ b/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj
@@ -17,7 +17,7 @@
-
+