FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
TensorFlow.NET/src/TensorFlowNET.Core/Training/SlotCreator.cs at master · ehtick/TensorFlow.NET · GitHub
ehtick
/
TensorFlow.NET
Public
forked from
SciSharp/TensorFlow.NET
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
TensorFlow.NET
/
src
/
TensorFlowNET.Core
/
Training
/
SlotCreator.cs
Copy path
More file actions
More file actions
Latest commit
History
History
History
113 lines (103 loc) · 4.42 KB
Breadcrumbs
TensorFlow.NET
/
src
/
TensorFlowNET.Core
/
Training
/
SlotCreator.cs
Copy path
File metadata and controls
113 lines (103 loc) · 4.42 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*****************************************************************************
Copyright 2018 The TensorFlow.NET Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
******************************************************************************/
using
System
;
using
Tensorflow
.
Operations
.
Initializers
;
using
static
Tensorflow
.
Binding
;
namespace
Tensorflow
.
Train
{
public
class
SlotCreator
{
/// <summary>
/// Create a slot initialized to the given value.
/// </summary>
/// <param name="primary"></param>
/// <param name="val"></param>
/// <param name="name"></param>
/// <param name="colocate_with_primary"></param>
/// <returns></returns>
public
IVariableV1
create_slot
(
RefVariable
primary
,
Tensor
val
,
string
name
,
bool
colocate_with_primary
=
true
)
{
var
validate_shape
=
val
.
shape
.
IsFullyDefined
;
var
prefix
=
primary
.
Op
.
name
;
return
tf_with
(
tf
.
variable_scope
(
name
:
null
,
prefix
+
"/"
+
name
)
,
delegate
{
return
_create_slot_var
(
primary
,
val
,
""
,
validate_shape
,
null
,
TF_DataType
.
DtInvalid
)
;
}
)
;
}
/// <summary>
/// Create a slot initialized to 0 with same shape as the primary object.
/// </summary>
/// <param name="primary"></param>
/// <param name="name"></param>
/// <param name="dtype"></param>
/// <param name="colocate_with_primary"></param>
/// <returns></returns>
public
IVariableV1
create_zeros_slot
(
IVariableV1
primary
,
string
name
,
TF_DataType
dtype
=
TF_DataType
.
DtInvalid
,
bool
colocate_with_primary
=
true
)
{
if
(
dtype
==
TF_DataType
.
DtInvalid
)
dtype
=
primary
.
dtype
;
var
slot_shape
=
primary
.
shape
;
if
(
slot_shape
.
IsFullyDefined
)
{
var
initializer
=
new
Zeros
(
)
;
return
create_slot_with_initializer
(
primary
,
initializer
,
slot_shape
,
dtype
,
name
,
colocate_with_primary
:
colocate_with_primary
)
;
}
else
{
throw
new
NotImplementedException
(
"create_zeros_slot is not fully defined."
)
;
}
}
/// <summary>
/// Creates a slot initialized using an `Initializer`.
/// </summary>
/// <returns></returns>
public
IVariableV1
create_slot_with_initializer
(
IVariableV1
primary
,
IInitializer
initializer
,
Shape
shape
,
TF_DataType
dtype
,
string
name
,
bool
colocate_with_primary
=
true
)
{
var
validate_shape
=
shape
.
IsFullyDefined
;
var
prefix
=
primary
.
Op
.
name
;
return
tf_with
(
new
variable_scope
(
string
.
Empty
,
prefix
+
"/"
+
name
)
,
delegate
{
return
_create_slot_var
(
primary
,
initializer
,
""
,
validate_shape
,
shape
,
dtype
)
;
}
)
;
}
/// <summary>
/// Helper function for creating a slot variable.
/// </summary>
/// <param name="primary"></param>
/// <param name="val"></param>
/// <param name="scope"></param>
/// <param name="validate_shape"></param>
/// <param name="shape"></param>
/// <param name="dtype"></param>
/// <returns></returns>
private
IVariableV1
_create_slot_var
(
IVariableV1
primary
,
object
val
,
string
scope
,
bool
validate_shape
,
Shape
shape
,
TF_DataType
dtype
)
{
bool
use_resource
=
primary
is
ResourceVariable
;
if
(
resource_variable_ops
.
is_resource_variable
(
primary
)
)
use_resource
=
true
;
var
slot
=
tf
.
compat
.
v1
.
get_variable
(
scope
,
initializer
:
val
,
trainable
:
false
,
use_resource
:
use_resource
,
shape
:
shape
,
dtype
:
dtype
,
validate_shape
:
validate_shape
)
;
return
slot
;
}
}
}
Back
|
FazBrowse Home
|
New Git URL