Class: Tensorflow::Graph::Operation
- Inherits:
-
Object
- Object
- Tensorflow::Graph::Operation
show all
- Includes:
- Operators
- Defined in:
- lib/tensorflow/graph/operation.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Operators
#%, #*, #**, #+, #-, #-@, #/
Constructor Details
#initialize(graph, pointer) ⇒ Operation
Returns a new instance of Operation.
7
8
9
10
|
# File 'lib/tensorflow/graph/operation.rb', line 7
def initialize(graph, pointer)
@graph = graph
@pointer = pointer
end
|
Instance Attribute Details
#graph ⇒ Object
Returns the value of attribute graph.
5
6
7
|
# File 'lib/tensorflow/graph/operation.rb', line 5
def graph
@graph
end
|
Instance Method Details
#==(other) ⇒ Object
20
21
22
|
# File 'lib/tensorflow/graph/operation.rb', line 20
def ==(other)
self.name == other.name
end
|
#[](index) ⇒ Object
91
92
93
|
# File 'lib/tensorflow/graph/operation.rb', line 91
def [](index)
self.outputs[index]
end
|
#attr(attr_name) ⇒ Object
138
139
140
141
142
143
144
|
# File 'lib/tensorflow/graph/operation.rb', line 138
def attr(attr_name)
metadata = Status.check do |status|
FFI.TF_OperationGetAttrMetadata(self, attr_name, status)
end
OperationAttr.new(self, attr_name, metadata)
end
|
#attributes ⇒ Object
132
133
134
135
136
|
# File 'lib/tensorflow/graph/operation.rb', line 132
def attributes
self.op_def.attr.map do |attr_def|
self.attr(attr_def.name)
end
end
|
#consumers ⇒ Object
159
160
161
162
163
164
|
# File 'lib/tensorflow/graph/operation.rb', line 159
def consumers
self.outputs.reduce(Array.new) do |result, output|
result.concat(self.output_consumers(output))
result
end
end
|
123
124
125
126
127
128
129
130
|
# File 'lib/tensorflow/graph/operation.rb', line 123
def control_inputs
pointer = ::FFI::MemoryPointer.new(:pointer, self.num_control_inputs)
FFI.TF_OperationGetControlInputs(self, pointer, self.num_control_inputs)
self.num_control_inputs.times.map do |index|
operation_ptr = pointer[index].read_pointer
self.class.new(self.graph, operation_ptr)
end
end
|
#control_outputs ⇒ Object
72
73
74
75
76
77
78
79
|
# File 'lib/tensorflow/graph/operation.rb', line 72
def control_outputs
pointer = ::FFI::MemoryPointer.new(:pointer, self.num_control_outputs)
FFI.TF_OperationGetControlOutputs(self, pointer, self.num_control_outputs)
self.num_control_outputs.times.map do |index|
operation_ptr = pointer[index].read_pointer
self.class.new(self.graph, operation_ptr)
end
end
|
#device ⇒ Object
40
41
42
|
# File 'lib/tensorflow/graph/operation.rb', line 40
def device
FFI.TF_OperationDevice(self)
end
|
#dtype ⇒ Object
109
110
111
|
# File 'lib/tensorflow/graph/operation.rb', line 109
def dtype
self.output_types.first
end
|
#eql?(other) ⇒ Boolean
16
17
18
|
# File 'lib/tensorflow/graph/operation.rb', line 16
def eql?(other)
self.name.eql?(other.name)
end
|
#hash ⇒ Object
24
25
26
|
# File 'lib/tensorflow/graph/operation.rb', line 24
def hash
self.name.hash
end
|
60
61
62
63
64
65
66
|
# File 'lib/tensorflow/graph/operation.rb', line 60
def inputs
pointer = ::FFI::MemoryPointer.new(FFI::Output, self.num_inputs)
FFI.TF_OperationAllInputs(self, pointer, self.num_inputs)
self.num_inputs.times.map do |index|
OperationOutput.from_graph(self.graph, pointer[index])
end
end
|
#name ⇒ Object
28
29
30
|
# File 'lib/tensorflow/graph/operation.rb', line 28
def name
FFI.TF_OperationName(self)
end
|
#node_def ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/tensorflow/graph/operation.rb', line 44
def node_def
buffer_ptr = FFI.TF_NewBuffer
Status.check do |status|
FFI.TF_OperationToNodeDef(self, buffer_ptr, status)
end
buffer = FFI::Buffer.new(buffer_ptr)
string = buffer[:data].read_string(buffer[:length])
NodeDef.decode(string)
ensure
FFI.TF_DeleteBuffer(buffer)
end
|
119
120
121
|
# File 'lib/tensorflow/graph/operation.rb', line 119
def num_control_inputs
FFI.TF_OperationNumControlInputs(self)
end
|
#num_control_outputs ⇒ Object
68
69
70
|
# File 'lib/tensorflow/graph/operation.rb', line 68
def num_control_outputs
FFI.TF_OperationNumControlOutputs(self)
end
|
56
57
58
|
# File 'lib/tensorflow/graph/operation.rb', line 56
def num_inputs
FFI.TF_OperationNumInputs(self)
end
|
#num_outputs ⇒ Object
81
82
83
|
# File 'lib/tensorflow/graph/operation.rb', line 81
def num_outputs
FFI.TF_OperationNumOutputs(self)
end
|
#op_def ⇒ Object
36
37
38
|
# File 'lib/tensorflow/graph/operation.rb', line 36
def op_def
self.graph.op_def(self.op_type)
end
|
#op_type ⇒ Object
32
33
34
|
# File 'lib/tensorflow/graph/operation.rb', line 32
def op_type
FFI.TF_OperationOpType(self)
end
|
#output_consumers(output) ⇒ Object
146
147
148
149
150
151
152
153
154
155
156
157
|
# File 'lib/tensorflow/graph/operation.rb', line 146
def output_consumers(output)
count = FFI.TF_OperationOutputNumConsumers(output)
consumers_ptr = ::FFI::MemoryPointer.new(FFI::Input, count)
FFI.TF_OperationOutputConsumers(output, consumers_ptr, count)
count.times.map do |i|
OperationOutput.from_graph(self.graph, consumers_ptr[i])
end
end
|
#output_list_length(arg_name) ⇒ Object
113
114
115
116
117
|
# File 'lib/tensorflow/graph/operation.rb', line 113
def output_list_length(arg_name)
Status.check do |status|
FFI.TF_OperationOutputListLength(self, arg_name, status)
end
end
|
#output_shapes ⇒ Object
101
102
103
|
# File 'lib/tensorflow/graph/operation.rb', line 101
def output_shapes
self.graph.output_shapes(self)
end
|
#output_types ⇒ Object
95
96
97
98
99
|
# File 'lib/tensorflow/graph/operation.rb', line 95
def output_types
self.outputs.map do |output|
FFI.TF_OperationOutputType(output)
end
end
|
#outputs ⇒ Object
85
86
87
88
89
|
# File 'lib/tensorflow/graph/operation.rb', line 85
def outputs
self.num_outputs.times.map do |i|
OperationOutput.from_index(self, i)
end
end
|
#shape ⇒ Object
105
106
107
|
# File 'lib/tensorflow/graph/operation.rb', line 105
def shape
self.output_shapes.first
end
|
#to_ptr ⇒ Object
12
13
14
|
# File 'lib/tensorflow/graph/operation.rb', line 12
def to_ptr
@pointer
end
|
#to_s ⇒ Object
166
167
168
169
170
171
172
173
|
# File 'lib/tensorflow/graph/operation.rb', line 166
def to_s
result = [self.op_type]
result << "name=#{self.name}"
outputs.length.times do |index|
result << "#{index}:(shape=#{self.output_shapes[index]}, dtype=#{self.output_types[index]})"
end
result.join(', ')
end
|