Class: Tensorflow::Data::Dataset

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/tensorflow/data/dataset.rb

Constant Summary collapse

DEFAULT_READER_BUFFER_SIZE_BYTES =

Copied from Python code

256 * 1024

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(variant_tensor) ⇒ Dataset

Returns a new instance of Dataset.



41
42
43
# File 'lib/tensorflow/data/dataset.rb', line 41

def initialize(variant_tensor)
  @variant_tensor = variant_tensor
end

Instance Attribute Details

#output_shapesObject (readonly)

TODO remove



10
11
12
# File 'lib/tensorflow/data/dataset.rb', line 10

def output_shapes
  @output_shapes
end

#output_typesObject (readonly)

TODO remove



10
11
12
# File 'lib/tensorflow/data/dataset.rb', line 10

def output_types
  @output_types
end

#variant_tensorObject (readonly)

TODO remove



10
11
12
# File 'lib/tensorflow/data/dataset.rb', line 10

def variant_tensor
  @variant_tensor
end

Class Method Details

.from_tensor_slices(tensors) ⇒ Object



37
38
39
# File 'lib/tensorflow/data/dataset.rb', line 37

def self.from_tensor_slices(tensors)
  TensorSliceDataset.new(tensors)
end

.from_tensors(tensors) ⇒ Object



33
34
35
# File 'lib/tensorflow/data/dataset.rb', line 33

def self.from_tensors(tensors)
  TensorDataset.new(tensors)
end

.to_tensor_array(values) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/tensorflow/data/dataset.rb', line 12

def self.to_tensor_array(values)
  case values
    when Numo::NArray
      [Tensor.new(values)]
    when Tensor
      [values]
    when Array
      values.to_a.map do |v|
        if v.is_a?(Tensor)
          v
        else
          Tensor.new(v)
        end
      end
    when Graph::Operation
      [values]
    else
      raise(Error::UnimplementedError, "Unsupported dataset element: #{values}")
  end
end

Instance Method Details

#batch(batch_size, drop_remainder: false) ⇒ Object



53
54
55
# File 'lib/tensorflow/data/dataset.rb', line 53

def batch(batch_size, drop_remainder: false)
  BatchDataset.new(self, batch_size, drop_remainder)
end

#dataObject

!!! DEBUG method. You don’t want to use this method it because it iterates over the entire dataset and reads it into a ruby array in memory



85
86
87
88
89
90
91
92
93
94
95
# File 'lib/tensorflow/data/dataset.rb', line 85

def data
  self.map do |slice|
    if slice.is_a?(Array)
      slice.map do |tensor|
        tensor.value
      end
    else
      slice.value
    end
  end
end

#eachObject



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/tensorflow/data/dataset.rb', line 69

def each
  iterator, deleter = RawOps.anonymous_iterator_v2(output_types: @output_types, output_shapes: @output_shapes)
  RawOps.make_iterator(@variant_tensor, iterator)
  begin
    loop do
      values = RawOps.iterator_get_next_sync(iterator, output_types: @output_types, output_shapes: @output_shapes)
      yield values
    end
  rescue Error::OutOfRangeError
  end
ensure
  RawOps.delete_iterator(iterator, deleter) if iterator
end

#make_initializable_iterator(shared_name: '') ⇒ Object



65
66
67
# File 'lib/tensorflow/data/dataset.rb', line 65

def make_initializable_iterator(shared_name: '')
  InitializableIterator.new(self, shared_name: shared_name)
end

#make_one_shot_iteratorObject



61
62
63
# File 'lib/tensorflow/data/dataset.rb', line 61

def make_one_shot_iterator
  OneShotIterator.new(self)
end

#map_func(func) ⇒ Object



97
98
99
# File 'lib/tensorflow/data/dataset.rb', line 97

def map_func(func)
  MapDataset.new(self, func)
end

#repeat(count) ⇒ Object



101
102
103
# File 'lib/tensorflow/data/dataset.rb', line 101

def repeat(count)
  RepeatDataset.new(self, 3)
end

#shuffle(buffer_size) ⇒ Object



57
58
59
# File 'lib/tensorflow/data/dataset.rb', line 57

def shuffle(buffer_size)
  ShuffleDataset.new(self, buffer_size)
end

#to_ptrObject



45
46
47
# File 'lib/tensorflow/data/dataset.rb', line 45

def to_ptr
  @variant_tensor.to_ptr
end

#with_options(options) ⇒ Object



49
50
51
# File 'lib/tensorflow/data/dataset.rb', line 49

def with_options(options)

end