Class: Tensorflow::NameScope

Inherits:
Object
  • Object
show all
Defined in:
lib/tensorflow/name_scope.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNameScope

Returns a new instance of NameScope.



7
8
9
10
# File 'lib/tensorflow/name_scope.rb', line 7

def initialize
  @stack = Array.new
  @names = Set.new
end

Instance Attribute Details

#namesObject (readonly)

Returns the value of attribute names.



5
6
7
# File 'lib/tensorflow/name_scope.rb', line 5

def names
  @names
end

#stackObject (readonly)

Returns the value of attribute stack.



5
6
7
# File 'lib/tensorflow/name_scope.rb', line 5

def stack
  @stack
end

Instance Method Details

#current_scopeObject



23
24
25
26
27
28
29
# File 'lib/tensorflow/name_scope.rb', line 23

def current_scope
  if self.stack.last.nil?
    nil
  else
    self.stack.join("/")
  end
end

#name_scope(base_name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/tensorflow/name_scope.rb', line 12

def name_scope(base_name)
  name = self.unique_name(base_name)
  stack.push(name)

  begin
    yield current_scope if block_given?
  ensure
    stack.pop
  end
end

#scoped_name(name) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/tensorflow/name_scope.rb', line 31

def scoped_name(name)
  base_name = case
                when self.stack.empty?
                  name
                when self.stack.last.nil?
                  name
                else
                  "#{self.current_scope}/#{name}"
              end

  self.unique_name(base_name)
end

#unique_name(name) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/tensorflow/name_scope.rb', line 44

def unique_name(name)
  return nil unless name

  i = 0
  check_name = name
  while self.names.include?(check_name.downcase)
    i += 1
    check_name = "#{name}_#{i}"
  end
  self.names << check_name.downcase unless check_name.nil?
  check_name
end