class Tensorflow::NameScope

Attributes

names[R]
stack[R]

Public Class Methods

new() click to toggle source
# File lib/tensorflow/name_scope.rb, line 7
def initialize
  @stack = Array.new
  @names = Set.new
end

Public Instance Methods

current_scope() click to toggle source
# 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) { |current_scope| ... } click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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