tensor_stream 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +34 -0
  4. data/lib/tensor_stream.rb +7 -3
  5. data/lib/tensor_stream/control_flow.rb +1 -2
  6. data/lib/tensor_stream/evaluator/operation_helpers/array_ops_helper.rb +44 -3
  7. data/lib/tensor_stream/evaluator/operation_helpers/math_helper.rb +9 -0
  8. data/lib/tensor_stream/evaluator/ruby_evaluator.rb +70 -36
  9. data/lib/tensor_stream/graph.rb +15 -7
  10. data/lib/tensor_stream/graph_serializers/graphml.rb +183 -35
  11. data/lib/tensor_stream/graph_serializers/pbtext.rb +81 -14
  12. data/lib/tensor_stream/graph_serializers/serializer.rb +13 -0
  13. data/lib/tensor_stream/helpers/string_helper.rb +12 -0
  14. data/lib/tensor_stream/math_gradients.rb +203 -161
  15. data/lib/tensor_stream/operation.rb +30 -16
  16. data/lib/tensor_stream/ops.rb +29 -19
  17. data/lib/tensor_stream/placeholder.rb +2 -3
  18. data/lib/tensor_stream/session.rb +7 -13
  19. data/lib/tensor_stream/tensor.rb +22 -5
  20. data/lib/tensor_stream/tensor_shape.rb +2 -0
  21. data/lib/tensor_stream/trainer.rb +6 -1
  22. data/lib/tensor_stream/variable.rb +4 -3
  23. data/lib/tensor_stream/version.rb +1 -1
  24. data/samples/gradient_sample.graphml +1255 -0
  25. data/samples/linear_regression.rb +1 -1
  26. data/samples/logistic_regression.rb +9 -2
  27. data/tensor_stream.gemspec +1 -1
  28. data/test_samples/error.graphml +120 -0
  29. data/test_samples/gradient_sample.graphml +1255 -0
  30. data/{samples → test_samples}/iris.rb +0 -0
  31. data/{samples → test_samples}/raw_neural_net_sample.rb +0 -0
  32. data/{samples → test_samples}/test.py +2 -0
  33. data/test_samples/test2.py +41 -0
  34. metadata +41 -47
@@ -5,14 +5,13 @@ module TensorStream
5
5
  attr_reader :outputs
6
6
 
7
7
  def initialize(operation, input_a, input_b, options = {})
8
- @graph = options[:graph] || TensorStream.get_default_graph
8
+ setup_initial_state(options)
9
9
 
10
10
  @operation = operation
11
11
  @rank = options[:rank] || 0
12
- @name = [@graph.get_name_scope, options[:name] || set_name].compact.join('/')
12
+ @name = [@graph.get_name_scope, options[:name] || set_name].compact.reject(&:empty?).join('/')
13
13
  @internal = options[:internal]
14
14
  @given_name = @name
15
- @source = format_source(caller_locations)
16
15
 
17
16
  @options = options
18
17
 
@@ -106,12 +105,12 @@ module TensorStream
106
105
  else
107
106
  "(#{sub_item} * #{sub_item2})"
108
107
  end
109
- when :reduce_sum
110
- "reduce_sum(|#{sub_item}|)"
111
- when :reduce_mean
112
- "reduce_mean(|#{sub_item}|)"
113
- when :reduce_prod
114
- "reduce_prod(|#{sub_item}|)"
108
+ when :sum
109
+ "sum(|#{sub_item}|, axis=#{sub_item2})"
110
+ when :mean
111
+ "mean(|#{sub_item}|, axis=#{sub_item2})"
112
+ when :prod
113
+ "prod(|#{sub_item}|, axis=#{sub_item2})"
115
114
  when :gradients
116
115
  "gradient(#{sub_item})"
117
116
  when :stop_gradient
@@ -131,7 +130,7 @@ module TensorStream
131
130
  when :ones_like
132
131
  "ones_like(#{sub_item})"
133
132
  when :flow_group
134
- "flow_group(#{items.collect { |i| auto_math(i) }.join(',')})"
133
+ "flow_group(#{items.collect { |i| auto_math(i, name_only, max_depth - 1, _cur_depth) }.join(',')})"
135
134
  when :zeros
136
135
  "zeros(#{sub_item})"
137
136
  when :reshape
@@ -166,6 +165,8 @@ module TensorStream
166
165
  "#{sub_item} && #{sub_item2}"
167
166
  when :sqrt
168
167
  "sqrt(#{sub_item})"
168
+ when :log1p
169
+ "log1p(#{sub_item})"
169
170
  when :zeros_like
170
171
  "zeros_like(#{sub_item})"
171
172
  when :where
@@ -174,8 +175,13 @@ module TensorStream
174
175
  "max(#{sub_item},#{sub_item2})"
175
176
  when :cast
176
177
  "cast(#{sub_item}, #{data_type})"
178
+ when :broadcast_transform
179
+ "broadcast_transform(#{sub_item},#{sub_item2})"
180
+ when :broadcast_gradient_args
181
+ "broadcast_transform(#{sub_item},#{sub_item2})"
177
182
  else
178
- raise "no math form for #{operation} defined"
183
+ "#{operation}(#{sub_item})" if sub_item
184
+ "#{operation}(#{sub_item}, #{sub_item2})" if sub_item && sub_item2
179
185
  end
180
186
  ["\n",(_cur_depth + 1).times.collect { ' ' }, out].flatten.join
181
187
  end
@@ -196,11 +202,14 @@ module TensorStream
196
202
  item_shape = items[0].shape.shape
197
203
  return nil if item_shape.nil?
198
204
  return item_shape[1, item_shape.size]
199
- when :reduce_mean, :reduce_prod, :reduce_sum
200
- return [] if options[:axis].nil?
205
+ when :mean, :prod, :sum
206
+ return [] if items[1].nil?
207
+ return nil if items[0].nil?
201
208
  item_shape = items[0].shape.shape
202
209
  return nil if item_shape.nil?
203
- axis = options[:axis]
210
+ return nil if items[1].is_a?(Tensor) && items[1].value.nil?
211
+
212
+ axis = items[1].is_a?(Tensor) ? items[1].value : items[1]
204
213
 
205
214
  axis = [ axis ] unless axis.is_a?(Array)
206
215
  return item_shape.each_with_index.map do |s, index|
@@ -236,10 +245,15 @@ module TensorStream
236
245
  end
237
246
 
238
247
  def propagate_consumer(consumer)
239
- super(consumer)
248
+ super
249
+ @items.compact.each do |item|
250
+ item.send(:propagate_consumer, consumer) if item.name != name
251
+ end
252
+ end
240
253
 
254
+ def propagate_outputs
241
255
  @items.compact.each do |item|
242
- item.send(:propagate_consumer, consumer) if item.name!=self.name
256
+ item.send(:setup_output, self) if item.name != self.name
243
257
  end
244
258
  end
245
259
 
@@ -1,36 +1,34 @@
1
1
  module TensorStream
2
2
  # Class that defines all available ops supported by TensorStream
3
3
  module Ops
4
- FLOATING_POINT_TYPES = %w[float32 float64].map(&:to_sym)
5
- NUMERIC_TYPES = %w[int32 int64 float32 float64].map(&:to_sym)
4
+ FLOATING_POINT_TYPES = %i[float32 float64 float].freeze
5
+ INTEGER_TYPES = %i[int32 int int64].freeze
6
+ NUMERIC_TYPES = FLOATING_POINT_TYPES + INTEGER_TYPES
6
7
 
7
8
  def argmax(input, axis = nil, name: nil, dimension: nil, output_type: :int32)
8
9
  _op(:argmax, input, nil, axis: axis, name: name, dimension: dimension, data_type: output_type)
9
10
  end
10
11
 
11
12
  def gradients(input, wrt_xs, grad_ys: nil,
12
- name: 'gradients',
13
- colocate_gradients_with_ops: false,
14
- gate_gradients: false,
15
- aggregation_method: nil,
16
- stop_gradients: nil)
13
+ name: 'gradients',
14
+ colocate_gradients_with_ops: false,
15
+ gate_gradients: false,
16
+ aggregation_method: nil,
17
+ stop_gradients: nil)
17
18
 
18
19
  gs = wrt_xs.collect do |x|
19
- raise "#{x} passed is not a tensor object" unless x.is_a?(Tensor)
20
-
21
20
  stops = stop_gradients ? stop_gradients.map(&:name).join('_') : ''
22
21
  gradient_program_name = "grad_#{input.name}_#{x.name}_#{stops}".to_sym
23
22
 
24
23
  tensor_program = if input.graph.node_added?(gradient_program_name)
25
- input.graph.get_node(gradient_program_name)
26
- else
24
+ input.graph.get_node(gradient_program_name)
25
+ else
27
26
  input.graph.name_scope("gradient_wrt_#{x.name}") do
28
27
  derivative_ops = TensorStream::MathGradients.derivative(input, x, graph: input.graph,
29
- stop_gradients: stop_gradients)
30
- unit_matrix = _op(:ones_like, x)
31
- input.graph.add_node!(gradient_program_name, unit_matrix * derivative_ops)
32
- end
33
- end
28
+ stop_gradients: stop_gradients)
29
+ input.graph.add_node!(gradient_program_name, derivative_ops)
30
+ end
31
+ end
34
32
  tensor_program
35
33
  end
36
34
  TensorStream.group(gs)
@@ -58,6 +56,10 @@ module TensorStream
58
56
  _op(:shape, input, nil, name: name, out_type: out_type)
59
57
  end
60
58
 
59
+ def tile(input, multiples, name: nil)
60
+ _op(:tile, input, multiples, name: name)
61
+ end
62
+
61
63
  def rank(input, name: nil)
62
64
  _op(:rank, input, name: name)
63
65
  end
@@ -107,15 +109,15 @@ module TensorStream
107
109
  end
108
110
 
109
111
  def reduce_mean(input_tensor, axis = nil, keepdims: false, name: nil)
110
- _op(:reduce_mean, input_tensor, nil, axis: axis, keepdims: keepdims, name: name)
112
+ _op(:mean, input_tensor, axis, keepdims: keepdims, name: name)
111
113
  end
112
114
 
113
115
  def reduce_sum(input_tensor, axis = nil, keepdims: false, name: nil)
114
- _op(:reduce_sum, input_tensor, nil, axis: axis, keepdims: keepdims, name: name)
116
+ _op(:sum, input_tensor, axis, keepdims: keepdims, name: name)
115
117
  end
116
118
 
117
119
  def reduce_prod(input, axis = nil, keepdims: false, name: nil)
118
- _op(:reduce_prod, input, nil, axis: axis, keepdims: keepdims, name: name)
120
+ _op(:prod, input, axis, keepdims: keepdims, name: name)
119
121
  end
120
122
 
121
123
  def concat(values, axis, name: 'concat')
@@ -202,6 +204,14 @@ module TensorStream
202
204
  _op(:mul, input_a, input_b, name: name)
203
205
  end
204
206
 
207
+ def mul(input_a, input_b, name: nil)
208
+ _op(:mul, input_a, input_b, name: name)
209
+ end
210
+
211
+ def div(input_a, input_b, name: nil)
212
+ _op(:div, input_a, input_b, name: name)
213
+ end
214
+
205
215
  def pow(input_a, input_e, name: nil)
206
216
  _op(:pow, input_a, input_e, name: name)
207
217
  end
@@ -2,16 +2,15 @@ module TensorStream
2
2
  # Class that defines a TensorStream placeholder
3
3
  class Placeholder < Tensor
4
4
  def initialize(data_type, rank, shape, options = {})
5
- @graph = options[:graph] || TensorStream.get_default_graph
5
+ setup_initial_state(options)
6
6
 
7
7
  @data_type = data_type
8
8
  @rank = rank
9
9
  @shape = TensorShape.new(shape, rank)
10
10
  @value = nil
11
11
  @is_const = false
12
- @source = format_source(caller_locations)
13
12
 
14
- @name = [@graph.get_name_scope, options[:name] || build_name].compact.join('/')
13
+ @name = [@graph.get_name_scope, options[:name] || build_name].compact.reject(&:empty?).join('/')
15
14
  @graph.add_node(self)
16
15
  end
17
16
 
@@ -1,13 +1,16 @@
1
1
  module TensorStream
2
2
  # TensorStream class that defines a session
3
3
  class Session
4
+ include StringHelper
5
+
4
6
  attr_reader :last_session_context, :closed, :target
5
7
  attr_accessor :randomizer
6
-
8
+
7
9
  def initialize(evaluator = :ruby_evaluator, thread_pool_class: Concurrent::ImmediateExecutor)
8
10
  @evaluator_class = Object.const_get("TensorStream::Evaluator::#{camelize(evaluator.to_s)}")
9
11
  @thread_pool = thread_pool_class.new
10
12
  @closed = false
13
+ @session_cache = {}
11
14
  @randomizer = {}
12
15
  end
13
16
 
@@ -21,7 +24,9 @@ module TensorStream
21
24
  else
22
25
  {}
23
26
  end
24
- context = {}
27
+ context = {
28
+ _cache: @session_cache
29
+ }
25
30
 
26
31
  # scan for placeholders and assign value
27
32
  if options[:feed_dict]
@@ -71,16 +76,5 @@ module TensorStream
71
76
  def graph_ml(tensor, filename)
72
77
  TensorStream::Graphml.new(self).serialize(tensor, filename)
73
78
  end
74
-
75
- private
76
-
77
- def camelize(string, uppercase_first_letter = true)
78
- string = if uppercase_first_letter
79
- string.sub(/^[a-z\d]*/) { $&.capitalize }
80
- else
81
- string.sub(/^(?:(?=\b|[A-Z_])|\w)/) { $&.downcase }
82
- end
83
- string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{$2.capitalize}" }.gsub('/', '::')
84
- end
85
79
  end
86
80
  end
@@ -7,18 +7,18 @@ module TensorStream
7
7
 
8
8
  attr_accessor :name, :data_type, :shape, :rank, :native_buffer, :is_const,
9
9
  :value, :breakpoint, :internal, :source, :given_name, :graph,
10
- :consumers
10
+ :consumers, :outputs
11
11
 
12
12
  def initialize(data_type, rank, shape, options = {})
13
+ setup_initial_state(options)
13
14
  @data_type = data_type
14
15
  @rank = rank
15
16
  @breakpoint = false
16
17
  @shape = TensorShape.new(shape, rank)
17
18
  @value = nil
18
- @source = format_source(caller_locations)
19
+
19
20
  @is_const = options[:const] || false
20
21
  @internal = options[:internal]
21
- @graph = options[:graph] || TensorStream.get_default_graph
22
22
  @name = [@graph.get_name_scope, options[:name] || build_name].compact.reject(&:empty?).join('/')
23
23
  @given_name = @name
24
24
 
@@ -113,7 +113,6 @@ module TensorStream
113
113
  def matmul(other)
114
114
  _op(:matmul, self, other)
115
115
  end
116
-
117
116
 
118
117
  def dot(other)
119
118
  _op(:matmul, self, other)
@@ -199,6 +198,10 @@ module TensorStream
199
198
  end
200
199
  end
201
200
 
201
+ if dtype.is_a?(Hash)
202
+ dtype = dtype[:dtype]
203
+ end
204
+
202
205
  case dtype.to_sym
203
206
  when :float32, :float
204
207
  if !!val == val
@@ -233,15 +236,29 @@ module TensorStream
233
236
 
234
237
  protected
235
238
 
239
+ def setup_initial_state(options)
240
+ @outputs = []
241
+ @graph = options[:graph] || TensorStream.get_default_graph
242
+ @source = format_source(caller_locations)
243
+ end
244
+
236
245
  def add_consumer(consumer)
237
246
  @consumers ||= []
238
- @consumers << consumer.name if !@consumers.include?(consumer.name) && consumer.name!=self.name
247
+ @consumers << consumer.name if !@consumers.include?(consumer.name) && consumer.name != name
248
+ end
249
+
250
+ def setup_output(consumer)
251
+ @outputs << consumer.name unless @outputs.include?(consumer.name)
239
252
  end
240
253
 
241
254
  def propagate_consumer(consumer)
242
255
  add_consumer(consumer)
243
256
  end
244
257
 
258
+ def propagate_outputs
259
+ # nop
260
+ end
261
+
245
262
  def hashify_tensor(tensor)
246
263
  if tensor.is_a?(Tensor)
247
264
  tensor.to_h
@@ -60,6 +60,8 @@ module TensorStream
60
60
  end
61
61
 
62
62
  dim = (arr.size / s)
63
+ return arr if dim.zero?
64
+
63
65
  arr.each_slice(dim).collect do |slice|
64
66
  reshape(slice, new_shape.dup)
65
67
  end
@@ -2,6 +2,11 @@ require 'tensor_stream/train/gradient_descent_optimizer'
2
2
  require 'tensor_stream/train/saver'
3
3
 
4
4
  module TensorStream
5
- module Train
5
+ module Trainer
6
+ def self.write_graph(graph, path, filename, as_text: true, serializer: TensorStream::Pbtext)
7
+ raise "only supports as_text=true for now" unless as_text
8
+ new_filename = File.join(path, filename)
9
+ File.write(new_filename, serializer.new.get_string(graph))
10
+ end
6
11
  end
7
12
  end
@@ -1,14 +1,15 @@
1
1
  module TensorStream
2
2
  # Class that defines a TensorStream variable
3
3
  class Variable < Tensor
4
- attr_accessor :trainable
4
+ attr_accessor :trainable, :options
5
5
  def initialize(data_type, rank, shape, options = {})
6
- @graph = options[:graph] || TensorStream.get_default_graph
6
+ setup_initial_state(options)
7
7
 
8
+ @options = {
9
+ }
8
10
  @data_type = data_type
9
11
  @rank = rank
10
12
  @value = nil
11
- @source = format_source(caller_locations)
12
13
  @name = [TensorStream.get_variable_scope, options[:name] || build_name].compact.reject(&:empty?).join('/')
13
14
  @initalizer_tensor = options[:initializer] ? options[:initializer] : _variable_scope.initializer || TensorStream.glorot_uniform_initializer
14
15
  if shape.nil? && @initalizer_tensor && @initalizer_tensor.shape
@@ -1,5 +1,5 @@
1
1
  module TensorStream
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
 
4
4
  def self.version
5
5
  VERSION
@@ -0,0 +1,1255 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml"
3
+ xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
4
+ <key id="d0" for="node" attr.name="label" attr.type="string"/>
5
+ <key id="d1" for="node" attr.name="formula" attr.type="string"/>
6
+ <key id="d2" for="node" attr.name="color" attr.type="string"/>
7
+ <key id="d3" for="node" attr.name="value" attr.type="string"/>
8
+ <key attr.name="description" attr.type="string" for="edge" id="d12"/>
9
+ <key for="edge" id="d13" yfiles.type="edgegraphics"/>
10
+ <key for="node" id="d9" yfiles.type="nodegraphics"/>
11
+ <graph id="g_-flow_group_615:" edgedefault="directed">
12
+ <node id="out">
13
+ <data key="d0">out</data>
14
+ <data key="d2">red</data>
15
+ <data key="d9">
16
+ <y:ShapeNode>
17
+ <y:Fill color="#FF0000" transparent="false"/>
18
+ <y:NodeLabel alignment="center">out</y:NodeLabel>
19
+ </y:ShapeNode>
20
+ </data>
21
+ </node>
22
+ <data key="d3">[[-0.18181076984697453, -0.2235356954437098]]</data>
23
+ <data key="d3">[-0.18181076984697453, -0.2235356954437098]</data>
24
+ <data key="d3">[-0.18181076984697453, -0.2235356954437098]</data>
25
+ <data key="d3">[-0.18181076984697453, -0.2235356954437098]</data>
26
+ <data key="d3">[[-0.18181076984697453, -0.2235356954437098]]</data>
27
+ <data key="d3">[[[5.25, 21.425]], [[-0.18181076984697453, -0.2235356954437098]]]</data>
28
+ <data key="d3">[[5.25, 21.425]]</data>
29
+ <data key="d3">[[1.25, 16.425]]</data>
30
+ <edge source="Const_113:2" target="matmul_462:0">
31
+ <data key="d13">
32
+ <y:PolyLineEdge>
33
+ <y:EdgeLabel >
34
+ <![CDATA[ [[1.0, 0.5, 4.0]] ]]>
35
+ </y:EdgeLabel >
36
+ <y:Arrows source="none" target="standard"/>
37
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
38
+ </y:PolyLineEdge>
39
+ </data>
40
+ </edge>
41
+ <edge source="Const_114:2" target="matmul_462:0">
42
+ <data key="d13">
43
+ <y:PolyLineEdge>
44
+ <y:EdgeLabel >
45
+ <![CDATA[ [[0.4, 0.2], [0.1, 0.45], [0.2, 4.0]] ]]>
46
+ </y:EdgeLabel >
47
+ <y:Arrows source="none" target="standard"/>
48
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
49
+ </y:PolyLineEdge>
50
+ </data>
51
+ </edge>
52
+ <edge source="matmul_462:0" target="add_463:0">
53
+ <data key="d13">
54
+ <y:PolyLineEdge>
55
+ <y:EdgeLabel >
56
+ <![CDATA[ [[1.25, 16.425]] ]]>
57
+ </y:EdgeLabel >
58
+ <y:Arrows source="none" target="standard"/>
59
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
60
+ </y:PolyLineEdge>
61
+ </data>
62
+ </edge>
63
+ <edge source="Const_116:1" target="add_463:0">
64
+ <data key="d13">
65
+ <y:PolyLineEdge>
66
+ <y:EdgeLabel >
67
+ <![CDATA[ [4.0, 5.0] ]]>
68
+ </y:EdgeLabel >
69
+ <y:Arrows source="none" target="standard"/>
70
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
71
+ </y:PolyLineEdge>
72
+ </data>
73
+ </edge>
74
+ <data key="d3">[[-0.18181076984697453, -0.2235356954437098]]</data>
75
+ <data key="d3">[[-0.3550398867513898, 0.2648611682365375]]</data>
76
+ <data key="d3">[[-0.7100797735027796, 0.44143528039422913]]</data>
77
+ <data key="d3">[[-0.7100797735027796, 0.44143528039422913]]</data>
78
+ <data key="d3">[[[3.9227774823857198, 5.169586592555774]], [[-0.7100797735027796, 0.44143528039422913]]]</data>
79
+ <data key="d3">[[3.9227774823857198, 5.169586592555774]]</data>
80
+ <data key="d3">[[-0.1772225176142799, 0.0695865925557746]]</data>
81
+ <data key="d3">[[-0.858934493426592, 0.5363855360913178]]</data>
82
+ <edge source="add_463:0" target="sin_464:0">
83
+ <data key="d13">
84
+ <y:PolyLineEdge>
85
+ <y:EdgeLabel >
86
+ <![CDATA[ [[5.25, 21.425]] ]]>
87
+ </y:EdgeLabel >
88
+ <y:Arrows source="none" target="standard"/>
89
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
90
+ </y:PolyLineEdge>
91
+ </data>
92
+ </edge>
93
+ <edge source="sin_464:0" target="matmul_465:0">
94
+ <data key="d13">
95
+ <y:PolyLineEdge>
96
+ <y:EdgeLabel >
97
+ <![CDATA[ [[-0.858934493426592, 0.5363855360913178]] ]]>
98
+ </y:EdgeLabel >
99
+ <y:Arrows source="none" target="standard"/>
100
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
101
+ </y:PolyLineEdge>
102
+ </data>
103
+ </edge>
104
+ <edge source="Const_115:2" target="matmul_465:0">
105
+ <data key="d13">
106
+ <y:PolyLineEdge>
107
+ <y:EdgeLabel >
108
+ <![CDATA[ [[0.3, 0.2], [0.15, 0.45]] ]]>
109
+ </y:EdgeLabel >
110
+ <y:Arrows source="none" target="standard"/>
111
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
112
+ </y:PolyLineEdge>
113
+ </data>
114
+ </edge>
115
+ <edge source="matmul_465:0" target="add_466:0">
116
+ <data key="d13">
117
+ <y:PolyLineEdge>
118
+ <y:EdgeLabel >
119
+ <![CDATA[ [[-0.1772225176142799, 0.0695865925557746]] ]]>
120
+ </y:EdgeLabel >
121
+ <y:Arrows source="none" target="standard"/>
122
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
123
+ </y:PolyLineEdge>
124
+ </data>
125
+ </edge>
126
+ <edge source="Const_117:1" target="add_466:0">
127
+ <data key="d13">
128
+ <y:PolyLineEdge>
129
+ <y:EdgeLabel >
130
+ <![CDATA[ [4.1, 5.1] ]]>
131
+ </y:EdgeLabel >
132
+ <y:Arrows source="none" target="standard"/>
133
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
134
+ </y:PolyLineEdge>
135
+ </data>
136
+ </edge>
137
+ <data key="d3">[[-0.7100797735027796, 0.44143528039422913]]</data>
138
+ <data key="d3">[1.0, 1.0]</data>
139
+ <edge source="Const_116:1" target="gradient_wrt_Const_116:1-ones_like_577:0">
140
+ <data key="d13">
141
+ <y:PolyLineEdge>
142
+ <y:EdgeLabel >
143
+ <![CDATA[ [4.0, 5.0] ]]>
144
+ </y:EdgeLabel >
145
+ <y:Arrows source="none" target="standard"/>
146
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
147
+ </y:PolyLineEdge>
148
+ </data>
149
+ </edge>
150
+ <data key="d3">[[-0.7100797735027796, 0.44143528039422913]]</data>
151
+ <edge source="add_466:0" target="gradient_wrt_Const_116:1-sin_467:0_grad-cos_578:0">
152
+ <data key="d13">
153
+ <y:PolyLineEdge>
154
+ <y:EdgeLabel >
155
+ <![CDATA[ [[3.9227774823857198, 5.169586592555774]] ]]>
156
+ </y:EdgeLabel >
157
+ <y:Arrows source="none" target="standard"/>
158
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
159
+ </y:PolyLineEdge>
160
+ </data>
161
+ </edge>
162
+ <edge source="gradient_wrt_Const_116:1-ones_like_577:0" target="gradient_wrt_Const_116:1-sin_467:0_grad-mul_579:0">
163
+ <data key="d13">
164
+ <y:PolyLineEdge>
165
+ <y:EdgeLabel >
166
+ <![CDATA[ [1.0, 1.0] ]]>
167
+ </y:EdgeLabel >
168
+ <y:Arrows source="none" target="standard"/>
169
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
170
+ </y:PolyLineEdge>
171
+ </data>
172
+ </edge>
173
+ <edge source="gradient_wrt_Const_116:1-sin_467:0_grad-cos_578:0" target="gradient_wrt_Const_116:1-sin_467:0_grad-mul_579:0">
174
+ <data key="d13">
175
+ <y:PolyLineEdge>
176
+ <y:EdgeLabel >
177
+ <![CDATA[ [[-0.7100797735027796, 0.44143528039422913]] ]]>
178
+ </y:EdgeLabel >
179
+ <y:Arrows source="none" target="standard"/>
180
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
181
+ </y:PolyLineEdge>
182
+ </data>
183
+ </edge>
184
+ <edge source="add_466:0" target="gradient_wrt_Const_116:1-broadcast_transform_580:0">
185
+ <data key="d13">
186
+ <y:PolyLineEdge>
187
+ <y:EdgeLabel >
188
+ <![CDATA[ [[3.9227774823857198, 5.169586592555774]] ]]>
189
+ </y:EdgeLabel >
190
+ <y:Arrows source="none" target="standard"/>
191
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
192
+ </y:PolyLineEdge>
193
+ </data>
194
+ </edge>
195
+ <edge source="gradient_wrt_Const_116:1-sin_467:0_grad-mul_579:0" target="gradient_wrt_Const_116:1-broadcast_transform_580:0">
196
+ <data key="d13">
197
+ <y:PolyLineEdge>
198
+ <y:EdgeLabel >
199
+ <![CDATA[ [[-0.7100797735027796, 0.44143528039422913]] ]]>
200
+ </y:EdgeLabel >
201
+ <y:Arrows source="none" target="standard"/>
202
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
203
+ </y:PolyLineEdge>
204
+ </data>
205
+ </edge>
206
+ <edge source="gradient_wrt_Const_116:1-broadcast_transform_580:0" target="gradient_wrt_Const_116:1-index_581:0">
207
+ <data key="d13">
208
+ <y:PolyLineEdge>
209
+ <y:EdgeLabel >
210
+ <![CDATA[ [[[3.9227774823857198, 5.169586592555774]], [[-0.7100797735027796, 0.44143528039422913]]] ]]>
211
+ </y:EdgeLabel >
212
+ <y:Arrows source="none" target="standard"/>
213
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
214
+ </y:PolyLineEdge>
215
+ </data>
216
+ </edge>
217
+ <edge source="gradient_wrt_Const_116:1-Const_148:0" target="gradient_wrt_Const_116:1-index_581:0">
218
+ <data key="d13">
219
+ <y:PolyLineEdge>
220
+ <y:EdgeLabel >
221
+ <![CDATA[ 1 ]]>
222
+ </y:EdgeLabel >
223
+ <y:Arrows source="none" target="standard"/>
224
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
225
+ </y:PolyLineEdge>
226
+ </data>
227
+ </edge>
228
+ <data key="d3">[]</data>
229
+ <data key="d3">[2]</data>
230
+ <edge source="Const_117:1" target="gradient_wrt_Const_116:1-add_466:0_grad-add-shape_y_1">
231
+ <data key="d13">
232
+ <y:PolyLineEdge>
233
+ <y:EdgeLabel >
234
+ <![CDATA[ [4.1, 5.1] ]]>
235
+ </y:EdgeLabel >
236
+ <y:Arrows source="none" target="standard"/>
237
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
238
+ </y:PolyLineEdge>
239
+ </data>
240
+ </edge>
241
+ <data key="d3">[1, 2]</data>
242
+ <edge source="matmul_465:0" target="gradient_wrt_Const_116:1-add_466:0_grad-add-shape_x_1">
243
+ <data key="d13">
244
+ <y:PolyLineEdge>
245
+ <y:EdgeLabel >
246
+ <![CDATA[ [[-0.1772225176142799, 0.0695865925557746]] ]]>
247
+ </y:EdgeLabel >
248
+ <y:Arrows source="none" target="standard"/>
249
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
250
+ </y:PolyLineEdge>
251
+ </data>
252
+ </edge>
253
+ <edge source="gradient_wrt_Const_116:1-add_466:0_grad-add-shape_y_1" target="gradient_wrt_Const_116:1-add_466:0_grad-broadcast_gradient_args_582:0">
254
+ <data key="d13">
255
+ <y:PolyLineEdge>
256
+ <y:EdgeLabel >
257
+ <![CDATA[ [2] ]]>
258
+ </y:EdgeLabel >
259
+ <y:Arrows source="none" target="standard"/>
260
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
261
+ </y:PolyLineEdge>
262
+ </data>
263
+ </edge>
264
+ <edge source="gradient_wrt_Const_116:1-add_466:0_grad-add-shape_x_1" target="gradient_wrt_Const_116:1-add_466:0_grad-broadcast_gradient_args_582:0">
265
+ <data key="d13">
266
+ <y:PolyLineEdge>
267
+ <y:EdgeLabel >
268
+ <![CDATA[ [1, 2] ]]>
269
+ </y:EdgeLabel >
270
+ <y:Arrows source="none" target="standard"/>
271
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
272
+ </y:PolyLineEdge>
273
+ </data>
274
+ </edge>
275
+ <edge source="gradient_wrt_Const_116:1-index_581:0" target="gradient_wrt_Const_116:1-add_466:0_grad-add-reduce_sum_x_1">
276
+ <data key="d13">
277
+ <y:PolyLineEdge>
278
+ <y:EdgeLabel >
279
+ <![CDATA[ [[-0.7100797735027796, 0.44143528039422913]] ]]>
280
+ </y:EdgeLabel >
281
+ <y:Arrows source="none" target="standard"/>
282
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
283
+ </y:PolyLineEdge>
284
+ </data>
285
+ </edge>
286
+ <edge source="gradient_wrt_Const_116:1-add_466:0_grad-broadcast_gradient_args_582:0" target="gradient_wrt_Const_116:1-add_466:0_grad-add-reduce_sum_x_1">
287
+ <data key="d13">
288
+ <y:PolyLineEdge>
289
+ <y:EdgeLabel >
290
+ <![CDATA[ [] ]]>
291
+ </y:EdgeLabel >
292
+ <y:Arrows source="none" target="standard"/>
293
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
294
+ </y:PolyLineEdge>
295
+ </data>
296
+ </edge>
297
+ <data key="d3">[[0.5, 0.6]]</data>
298
+ <data key="d3">[[1.0, 1.0]]</data>
299
+ <edge source="gradient_wrt_Const_116:1-matmul_465:0_grad-Const_151:1" target="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-identity0_2">
300
+ <data key="d13">
301
+ <y:PolyLineEdge>
302
+ <y:EdgeLabel >
303
+ <![CDATA[ [1, 2] ]]>
304
+ </y:EdgeLabel >
305
+ <y:Arrows source="none" target="standard"/>
306
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
307
+ </y:PolyLineEdge>
308
+ </data>
309
+ </edge>
310
+ <edge source="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-identity0_2" target="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul_596:0">
311
+ <data key="d13">
312
+ <y:PolyLineEdge>
313
+ <y:EdgeLabel >
314
+ <![CDATA[ [[1.0, 1.0]] ]]>
315
+ </y:EdgeLabel >
316
+ <y:Arrows source="none" target="standard"/>
317
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
318
+ </y:PolyLineEdge>
319
+ </data>
320
+ </edge>
321
+ <edge source="Const_115:2" target="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul_596:0">
322
+ <data key="d13">
323
+ <y:PolyLineEdge>
324
+ <y:EdgeLabel >
325
+ <![CDATA[ [[0.3, 0.2], [0.15, 0.45]] ]]>
326
+ </y:EdgeLabel >
327
+ <y:Arrows source="none" target="standard"/>
328
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
329
+ </y:PolyLineEdge>
330
+ </data>
331
+ </edge>
332
+ <edge source="gradient_wrt_Const_116:1-add_466:0_grad-add-reduce_sum_x_1" target="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-grad_a_norm_mul_da_2">
333
+ <data key="d13">
334
+ <y:PolyLineEdge>
335
+ <y:EdgeLabel >
336
+ <![CDATA[ [[-0.7100797735027796, 0.44143528039422913]] ]]>
337
+ </y:EdgeLabel >
338
+ <y:Arrows source="none" target="standard"/>
339
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
340
+ </y:PolyLineEdge>
341
+ </data>
342
+ </edge>
343
+ <edge source="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul_596:0" target="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-grad_a_norm_mul_da_2">
344
+ <data key="d13">
345
+ <y:PolyLineEdge>
346
+ <y:EdgeLabel >
347
+ <![CDATA[ [[0.5, 0.6]] ]]>
348
+ </y:EdgeLabel >
349
+ <y:Arrows source="none" target="standard"/>
350
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
351
+ </y:PolyLineEdge>
352
+ </data>
353
+ </edge>
354
+ <data key="d3">[[0.5120854772418407, -0.8439730781677989]]</data>
355
+ <edge source="add_463:0" target="gradient_wrt_Const_116:1-sin_464:0_grad-cos_598:0">
356
+ <data key="d13">
357
+ <y:PolyLineEdge>
358
+ <y:EdgeLabel >
359
+ <![CDATA[ [[5.25, 21.425]] ]]>
360
+ </y:EdgeLabel >
361
+ <y:Arrows source="none" target="standard"/>
362
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
363
+ </y:PolyLineEdge>
364
+ </data>
365
+ </edge>
366
+ <edge source="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-grad_a_norm_mul_da_2" target="gradient_wrt_Const_116:1-sin_464:0_grad-mul_599:0">
367
+ <data key="d13">
368
+ <y:PolyLineEdge>
369
+ <y:EdgeLabel >
370
+ <![CDATA[ [[-0.3550398867513898, 0.2648611682365375]] ]]>
371
+ </y:EdgeLabel >
372
+ <y:Arrows source="none" target="standard"/>
373
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
374
+ </y:PolyLineEdge>
375
+ </data>
376
+ </edge>
377
+ <edge source="gradient_wrt_Const_116:1-sin_464:0_grad-cos_598:0" target="gradient_wrt_Const_116:1-sin_464:0_grad-mul_599:0">
378
+ <data key="d13">
379
+ <y:PolyLineEdge>
380
+ <y:EdgeLabel >
381
+ <![CDATA[ [[0.5120854772418407, -0.8439730781677989]] ]]>
382
+ </y:EdgeLabel >
383
+ <y:Arrows source="none" target="standard"/>
384
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
385
+ </y:PolyLineEdge>
386
+ </data>
387
+ </edge>
388
+ <edge source="add_463:0" target="gradient_wrt_Const_116:1-broadcast_transform_600:0">
389
+ <data key="d13">
390
+ <y:PolyLineEdge>
391
+ <y:EdgeLabel >
392
+ <![CDATA[ [[5.25, 21.425]] ]]>
393
+ </y:EdgeLabel >
394
+ <y:Arrows source="none" target="standard"/>
395
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
396
+ </y:PolyLineEdge>
397
+ </data>
398
+ </edge>
399
+ <edge source="gradient_wrt_Const_116:1-sin_464:0_grad-mul_599:0" target="gradient_wrt_Const_116:1-broadcast_transform_600:0">
400
+ <data key="d13">
401
+ <y:PolyLineEdge>
402
+ <y:EdgeLabel >
403
+ <![CDATA[ [[-0.18181076984697453, -0.2235356954437098]] ]]>
404
+ </y:EdgeLabel >
405
+ <y:Arrows source="none" target="standard"/>
406
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
407
+ </y:PolyLineEdge>
408
+ </data>
409
+ </edge>
410
+ <edge source="gradient_wrt_Const_116:1-broadcast_transform_600:0" target="gradient_wrt_Const_116:1-index_602:0">
411
+ <data key="d13">
412
+ <y:PolyLineEdge>
413
+ <y:EdgeLabel >
414
+ <![CDATA[ [[[5.25, 21.425]], [[-0.18181076984697453, -0.2235356954437098]]] ]]>
415
+ </y:EdgeLabel >
416
+ <y:Arrows source="none" target="standard"/>
417
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
418
+ </y:PolyLineEdge>
419
+ </data>
420
+ </edge>
421
+ <edge source="gradient_wrt_Const_116:1-Const_156:0" target="gradient_wrt_Const_116:1-index_602:0">
422
+ <data key="d13">
423
+ <y:PolyLineEdge>
424
+ <y:EdgeLabel >
425
+ <![CDATA[ 1 ]]>
426
+ </y:EdgeLabel >
427
+ <y:Arrows source="none" target="standard"/>
428
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
429
+ </y:PolyLineEdge>
430
+ </data>
431
+ </edge>
432
+ <data key="d3">[0]</data>
433
+ <data key="d3">[1, 2]</data>
434
+ <edge source="matmul_462:0" target="gradient_wrt_Const_116:1-add_463:0_grad-add-shape_x_3">
435
+ <data key="d13">
436
+ <y:PolyLineEdge>
437
+ <y:EdgeLabel >
438
+ <![CDATA[ [[1.25, 16.425]] ]]>
439
+ </y:EdgeLabel >
440
+ <y:Arrows source="none" target="standard"/>
441
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
442
+ </y:PolyLineEdge>
443
+ </data>
444
+ </edge>
445
+ <data key="d3">[2]</data>
446
+ <edge source="Const_116:1" target="gradient_wrt_Const_116:1-add_463:0_grad-add-shape_y_3">
447
+ <data key="d13">
448
+ <y:PolyLineEdge>
449
+ <y:EdgeLabel >
450
+ <![CDATA[ [4.0, 5.0] ]]>
451
+ </y:EdgeLabel >
452
+ <y:Arrows source="none" target="standard"/>
453
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
454
+ </y:PolyLineEdge>
455
+ </data>
456
+ </edge>
457
+ <edge source="gradient_wrt_Const_116:1-add_463:0_grad-add-shape_x_3" target="gradient_wrt_Const_116:1-add_463:0_grad-broadcast_gradient_args_604:0">
458
+ <data key="d13">
459
+ <y:PolyLineEdge>
460
+ <y:EdgeLabel >
461
+ <![CDATA[ [1, 2] ]]>
462
+ </y:EdgeLabel >
463
+ <y:Arrows source="none" target="standard"/>
464
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
465
+ </y:PolyLineEdge>
466
+ </data>
467
+ </edge>
468
+ <edge source="gradient_wrt_Const_116:1-add_463:0_grad-add-shape_y_3" target="gradient_wrt_Const_116:1-add_463:0_grad-broadcast_gradient_args_604:0">
469
+ <data key="d13">
470
+ <y:PolyLineEdge>
471
+ <y:EdgeLabel >
472
+ <![CDATA[ [2] ]]>
473
+ </y:EdgeLabel >
474
+ <y:Arrows source="none" target="standard"/>
475
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
476
+ </y:PolyLineEdge>
477
+ </data>
478
+ </edge>
479
+ <edge source="gradient_wrt_Const_116:1-index_602:0" target="gradient_wrt_Const_116:1-add_463:0_grad-add-reduce_sum_y_3">
480
+ <data key="d13">
481
+ <y:PolyLineEdge>
482
+ <y:EdgeLabel >
483
+ <![CDATA[ [[-0.18181076984697453, -0.2235356954437098]] ]]>
484
+ </y:EdgeLabel >
485
+ <y:Arrows source="none" target="standard"/>
486
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
487
+ </y:PolyLineEdge>
488
+ </data>
489
+ </edge>
490
+ <edge source="gradient_wrt_Const_116:1-add_463:0_grad-broadcast_gradient_args_604:0" target="gradient_wrt_Const_116:1-add_463:0_grad-add-reduce_sum_y_3">
491
+ <data key="d13">
492
+ <y:PolyLineEdge>
493
+ <y:EdgeLabel >
494
+ <![CDATA[ [0] ]]>
495
+ </y:EdgeLabel >
496
+ <y:Arrows source="none" target="standard"/>
497
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
498
+ </y:PolyLineEdge>
499
+ </data>
500
+ </edge>
501
+ <edge source="Const_116:1" target="gradient_wrt_Const_116:1-ones_like_611:0">
502
+ <data key="d13">
503
+ <y:PolyLineEdge>
504
+ <y:EdgeLabel >
505
+ <![CDATA[ [4.0, 5.0] ]]>
506
+ </y:EdgeLabel >
507
+ <y:Arrows source="none" target="standard"/>
508
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
509
+ </y:PolyLineEdge>
510
+ </data>
511
+ </edge>
512
+ <edge source="gradient_wrt_Const_116:1-add_463:0_grad-add-reduce_sum_y_3" target="gradient_wrt_Const_116:1-mul_612:0">
513
+ <data key="d13">
514
+ <y:PolyLineEdge>
515
+ <y:EdgeLabel >
516
+ <![CDATA[ [-0.18181076984697453, -0.2235356954437098] ]]>
517
+ </y:EdgeLabel >
518
+ <y:Arrows source="none" target="standard"/>
519
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
520
+ </y:PolyLineEdge>
521
+ </data>
522
+ </edge>
523
+ <edge source="gradient_wrt_Const_116:1-ones_like_611:0" target="gradient_wrt_Const_116:1-mul_612:0">
524
+ <data key="d13">
525
+ <y:PolyLineEdge>
526
+ <y:EdgeLabel >
527
+ <![CDATA[ ]]>
528
+ </y:EdgeLabel >
529
+ <y:Arrows source="none" target="standard"/>
530
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
531
+ </y:PolyLineEdge>
532
+ </data>
533
+ </edge>
534
+ <data key="d3">[]</data>
535
+ <edge source="Const_116:1" target="gradient_wrt_Const_116:1-shape_613:0">
536
+ <data key="d13">
537
+ <y:PolyLineEdge>
538
+ <y:EdgeLabel >
539
+ <![CDATA[ [4.0, 5.0] ]]>
540
+ </y:EdgeLabel >
541
+ <y:Arrows source="none" target="standard"/>
542
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
543
+ </y:PolyLineEdge>
544
+ </data>
545
+ </edge>
546
+ <edge source="gradient_wrt_Const_116:1-mul_612:0" target="gradient_wrt_Const_116:1-truncate_614:0">
547
+ <data key="d13">
548
+ <y:PolyLineEdge>
549
+ <y:EdgeLabel >
550
+ <![CDATA[ [-0.18181076984697453, -0.2235356954437098] ]]>
551
+ </y:EdgeLabel >
552
+ <y:Arrows source="none" target="standard"/>
553
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
554
+ </y:PolyLineEdge>
555
+ </data>
556
+ </edge>
557
+ <edge source="gradient_wrt_Const_116:1-shape_613:0" target="gradient_wrt_Const_116:1-truncate_614:0">
558
+ <data key="d13">
559
+ <y:PolyLineEdge>
560
+ <y:EdgeLabel >
561
+ <![CDATA[ [] ]]>
562
+ </y:EdgeLabel >
563
+ <y:Arrows source="none" target="standard"/>
564
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
565
+ </y:PolyLineEdge>
566
+ </data>
567
+ </edge>
568
+ <edge source="gradient_wrt_Const_116:1-truncate_614:0" target="-flow_group_615:">
569
+ <data key="d13">
570
+ <y:PolyLineEdge>
571
+ <y:EdgeLabel >
572
+ <![CDATA[ [-0.18181076984697453, -0.2235356954437098] ]]>
573
+ </y:EdgeLabel >
574
+ <y:Arrows source="none" target="standard"/>
575
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
576
+ </y:PolyLineEdge>
577
+ </data>
578
+ </edge>
579
+ <node id="" yfiles.foldertype="group">
580
+ <data key="d9">
581
+ <y:ProxyAutoBoundsNode>
582
+ <y:Realizers active="0">
583
+ <y:GroupNode>
584
+ <y:Fill color="#CAECFF84" transparent="false"/>
585
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
586
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0"></y:NodeLabel>
587
+ <y:Shape type="roundrectangle"/>
588
+ </y:GroupNode>
589
+ </y:Realizers>
590
+ </y:ProxyAutoBoundsNode>
591
+ </data>
592
+ <graph edgedefault="directed" id="n105:">
593
+ <node id="" yfiles.foldertype="group">
594
+ <data key="d9">
595
+ <y:ProxyAutoBoundsNode>
596
+ <y:Realizers active="0">
597
+ <y:GroupNode>
598
+ <y:Fill color="#CAECFF84" transparent="false"/>
599
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
600
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0"></y:NodeLabel>
601
+ <y:Shape type="roundrectangle"/>
602
+ </y:GroupNode>
603
+ </y:Realizers>
604
+ </y:ProxyAutoBoundsNode>
605
+ </data>
606
+ <graph edgedefault="directed" id="n105:">
607
+ <node id="-flow_group_615:">
608
+ <data key="d0">flow_group</data>
609
+ <data key="d1">
610
+ flow_group(gradient_wrt_Const_116:1/truncate_614:0)</data>
611
+ <data key="d2">blue</data>
612
+ <data key="d9">
613
+ <y:ShapeNode>
614
+ <y:Fill color="#99CC00" transparent="false"/>
615
+ <y:NodeLabel alignment="center">flow_group</y:NodeLabel>
616
+ </y:ShapeNode>
617
+ </data>
618
+ </node>
619
+ </graph>
620
+ </node>
621
+ </graph>
622
+ </node>
623
+ <node id="gradient_wrt_Const_116:1" yfiles.foldertype="group">
624
+ <data key="d9">
625
+ <y:ProxyAutoBoundsNode>
626
+ <y:Realizers active="0">
627
+ <y:GroupNode>
628
+ <y:Fill color="#CAECFF84" transparent="false"/>
629
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
630
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">gradient_wrt_Const_116:1</y:NodeLabel>
631
+ <y:Shape type="roundrectangle"/>
632
+ </y:GroupNode>
633
+ </y:Realizers>
634
+ </y:ProxyAutoBoundsNode>
635
+ </data>
636
+ <graph edgedefault="directed" id="n105:">
637
+ <node id="gradient_wrt_Const_116:1" yfiles.foldertype="group">
638
+ <data key="d9">
639
+ <y:ProxyAutoBoundsNode>
640
+ <y:Realizers active="0">
641
+ <y:GroupNode>
642
+ <y:Fill color="#CAECFF84" transparent="false"/>
643
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
644
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">gradient_wrt_Const_116:1</y:NodeLabel>
645
+ <y:Shape type="roundrectangle"/>
646
+ </y:GroupNode>
647
+ </y:Realizers>
648
+ </y:ProxyAutoBoundsNode>
649
+ </data>
650
+ <graph edgedefault="directed" id="n105:">
651
+ <node id="gradient_wrt_Const_116:1-truncate_614:0">
652
+ <data key="d0">truncate</data>
653
+ <data key="d1">
654
+ truncate(gradient_wrt_Const_116:1/mul_612:0, gradient_wrt_Const_116:1/shape_613:0)</data>
655
+ <data key="d2">blue</data>
656
+ <data key="d9">
657
+ <y:ShapeNode>
658
+ <y:Fill color="#FFFF99" transparent="false"/>
659
+ <y:NodeLabel alignment="center">truncate</y:NodeLabel>
660
+ </y:ShapeNode>
661
+ </data>
662
+ </node>
663
+ <node id="gradient_wrt_Const_116:1-mul_612:0">
664
+ <data key="d0">mul</data>
665
+ <data key="d1">
666
+ (gradient_wrt_Const_116:1/add_463:0_grad/add/reduce_sum_y_3 * gradient_wrt_Const_116:1/ones_like_611:0)</data>
667
+ <data key="d2">blue</data>
668
+ <data key="d9">
669
+ <y:ShapeNode>
670
+ <y:Fill color="#99CC00" transparent="false"/>
671
+ <y:NodeLabel alignment="center">mul</y:NodeLabel>
672
+ </y:ShapeNode>
673
+ </data>
674
+ </node>
675
+ <node id="gradient_wrt_Const_116:1-index_602:0">
676
+ <data key="d0">index</data>
677
+ <data key="d1">
678
+ gradient_wrt_Const_116:1/broadcast_transform_600:0[gradient_wrt_Const_116:1/Const_156:0]</data>
679
+ <data key="d2">blue</data>
680
+ <data key="d9">
681
+ <y:ShapeNode>
682
+ <y:Fill color="#99CC00" transparent="false"/>
683
+ <y:NodeLabel alignment="center">index</y:NodeLabel>
684
+ </y:ShapeNode>
685
+ </data>
686
+ </node>
687
+ <node id="gradient_wrt_Const_116:1-broadcast_transform_600:0">
688
+ <data key="d0">broadcast_transform</data>
689
+ <data key="d1">
690
+ broadcast_transform(add_463:0,gradient_wrt_Const_116:1/sin_464:0_grad/mul_599:0)</data>
691
+ <data key="d2">blue</data>
692
+ <data key="d9">
693
+ <y:ShapeNode>
694
+ <y:Fill color="#99CC00" transparent="false"/>
695
+ <y:NodeLabel alignment="center">broadcast_transform</y:NodeLabel>
696
+ </y:ShapeNode>
697
+ </data>
698
+ </node>
699
+ <node id="gradient_wrt_Const_116:1-index_581:0">
700
+ <data key="d0">index</data>
701
+ <data key="d1">
702
+ gradient_wrt_Const_116:1/broadcast_transform_580:0[gradient_wrt_Const_116:1/Const_148:0]</data>
703
+ <data key="d2">blue</data>
704
+ <data key="d9">
705
+ <y:ShapeNode>
706
+ <y:Fill color="#99CC00" transparent="false"/>
707
+ <y:NodeLabel alignment="center">index</y:NodeLabel>
708
+ </y:ShapeNode>
709
+ </data>
710
+ </node>
711
+ <node id="gradient_wrt_Const_116:1-broadcast_transform_580:0">
712
+ <data key="d0">broadcast_transform</data>
713
+ <data key="d1">
714
+ broadcast_transform(add_466:0,gradient_wrt_Const_116:1/sin_467:0_grad/mul_579:0)</data>
715
+ <data key="d2">blue</data>
716
+ <data key="d9">
717
+ <y:ShapeNode>
718
+ <y:Fill color="#99CC00" transparent="false"/>
719
+ <y:NodeLabel alignment="center">broadcast_transform</y:NodeLabel>
720
+ </y:ShapeNode>
721
+ </data>
722
+ </node>
723
+ <node id="gradient_wrt_Const_116:1-ones_like_577:0">
724
+ <data key="d0">ones_like</data>
725
+ <data key="d1">
726
+ ones_like(Const_116:1)</data>
727
+ <data key="d2">blue</data>
728
+ <data key="d9">
729
+ <y:ShapeNode>
730
+ <y:Fill color="#FFFF99" transparent="false"/>
731
+ <y:NodeLabel alignment="center">ones_like</y:NodeLabel>
732
+ </y:ShapeNode>
733
+ </data>
734
+ </node>
735
+ <node id="gradient_wrt_Const_116:1-Const_148:0">
736
+ <data key="d0">gradient_wrt_Const_116:1/Const_148:0</data>
737
+ <data key="d2">black</data>
738
+ <data key="d9">
739
+ <y:ShapeNode>
740
+ <y:Fill color="#FFFFFF" transparent="false"/>
741
+ <y:NodeLabel alignment="center">gradient_wrt_Const_116:1/Const_148:0</y:NodeLabel>
742
+ </y:ShapeNode>
743
+ </data>
744
+ </node>
745
+ <node id="gradient_wrt_Const_116:1-Const_156:0">
746
+ <data key="d0">gradient_wrt_Const_116:1/Const_156:0</data>
747
+ <data key="d2">black</data>
748
+ <data key="d9">
749
+ <y:ShapeNode>
750
+ <y:Fill color="#FFFFFF" transparent="false"/>
751
+ <y:NodeLabel alignment="center">gradient_wrt_Const_116:1/Const_156:0</y:NodeLabel>
752
+ </y:ShapeNode>
753
+ </data>
754
+ </node>
755
+ <node id="gradient_wrt_Const_116:1-ones_like_611:0">
756
+ <data key="d0">ones_like</data>
757
+ <data key="d1">
758
+ ones_like(Const_116:1)</data>
759
+ <data key="d2">blue</data>
760
+ <data key="d9">
761
+ <y:ShapeNode>
762
+ <y:Fill color="#FFFF99" transparent="false"/>
763
+ <y:NodeLabel alignment="center">ones_like</y:NodeLabel>
764
+ </y:ShapeNode>
765
+ </data>
766
+ </node>
767
+ <node id="gradient_wrt_Const_116:1-shape_613:0">
768
+ <data key="d0">shape</data>
769
+ <data key="d1">
770
+ Const_116:1.shape</data>
771
+ <data key="d2">blue</data>
772
+ <data key="d9">
773
+ <y:ShapeNode>
774
+ <y:Fill color="#99CC00" transparent="false"/>
775
+ <y:NodeLabel alignment="center">shape</y:NodeLabel>
776
+ </y:ShapeNode>
777
+ </data>
778
+ </node>
779
+ <node id="add_463:0_grad" yfiles.foldertype="group">
780
+ <data key="d9">
781
+ <y:ProxyAutoBoundsNode>
782
+ <y:Realizers active="0">
783
+ <y:GroupNode>
784
+ <y:Fill color="#CAECFF84" transparent="false"/>
785
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
786
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">add_463:0_grad</y:NodeLabel>
787
+ <y:Shape type="roundrectangle"/>
788
+ </y:GroupNode>
789
+ </y:Realizers>
790
+ </y:ProxyAutoBoundsNode>
791
+ </data>
792
+ <graph edgedefault="directed" id="n105:">
793
+ <node id="gradient_wrt_Const_116:1-add_463:0_grad-broadcast_gradient_args_604:0">
794
+ <data key="d0">broadcast_gradient_args</data>
795
+ <data key="d1">
796
+ broadcast_transform(gradient_wrt_Const_116:1/add_463:0_grad/add/shape_x_3,gradient_wrt_Const_116:1/add_463:0_grad/add/shape_y_3)</data>
797
+ <data key="d2">blue</data>
798
+ <data key="d9">
799
+ <y:ShapeNode>
800
+ <y:Fill color="#99CC00" transparent="false"/>
801
+ <y:NodeLabel alignment="center">broadcast_gradient_args</y:NodeLabel>
802
+ </y:ShapeNode>
803
+ </data>
804
+ </node>
805
+ <node id="add" yfiles.foldertype="group">
806
+ <data key="d9">
807
+ <y:ProxyAutoBoundsNode>
808
+ <y:Realizers active="0">
809
+ <y:GroupNode>
810
+ <y:Fill color="#CAECFF84" transparent="false"/>
811
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
812
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">add</y:NodeLabel>
813
+ <y:Shape type="roundrectangle"/>
814
+ </y:GroupNode>
815
+ </y:Realizers>
816
+ </y:ProxyAutoBoundsNode>
817
+ </data>
818
+ <graph edgedefault="directed" id="n105:">
819
+ <node id="gradient_wrt_Const_116:1-add_463:0_grad-add-reduce_sum_y_3">
820
+ <data key="d0">sum</data>
821
+ <data key="d1">
822
+ sum(|gradient_wrt_Const_116:1/index_602:0|, axis=gradient_wrt_Const_116:1/add_463:0_grad/broadcast_gradient_args_604:0)</data>
823
+ <data key="d2">blue</data>
824
+ <data key="d9">
825
+ <y:ShapeNode>
826
+ <y:Fill color="#99CC00" transparent="false"/>
827
+ <y:NodeLabel alignment="center">sum</y:NodeLabel>
828
+ </y:ShapeNode>
829
+ </data>
830
+ </node>
831
+ <node id="gradient_wrt_Const_116:1-add_463:0_grad-add-shape_x_3">
832
+ <data key="d0">shape</data>
833
+ <data key="d1">
834
+ matmul_462:0.shape</data>
835
+ <data key="d2">blue</data>
836
+ <data key="d9">
837
+ <y:ShapeNode>
838
+ <y:Fill color="#99CC00" transparent="false"/>
839
+ <y:NodeLabel alignment="center">shape</y:NodeLabel>
840
+ </y:ShapeNode>
841
+ </data>
842
+ </node>
843
+ <node id="gradient_wrt_Const_116:1-add_463:0_grad-add-shape_y_3">
844
+ <data key="d0">shape</data>
845
+ <data key="d1">
846
+ Const_116:1.shape</data>
847
+ <data key="d2">blue</data>
848
+ <data key="d9">
849
+ <y:ShapeNode>
850
+ <y:Fill color="#99CC00" transparent="false"/>
851
+ <y:NodeLabel alignment="center">shape</y:NodeLabel>
852
+ </y:ShapeNode>
853
+ </data>
854
+ </node>
855
+ </graph>
856
+ </node>
857
+ </graph>
858
+ </node>
859
+ <node id="sin_464:0_grad" yfiles.foldertype="group">
860
+ <data key="d9">
861
+ <y:ProxyAutoBoundsNode>
862
+ <y:Realizers active="0">
863
+ <y:GroupNode>
864
+ <y:Fill color="#CAECFF84" transparent="false"/>
865
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
866
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">sin_464:0_grad</y:NodeLabel>
867
+ <y:Shape type="roundrectangle"/>
868
+ </y:GroupNode>
869
+ </y:Realizers>
870
+ </y:ProxyAutoBoundsNode>
871
+ </data>
872
+ <graph edgedefault="directed" id="n105:">
873
+ <node id="gradient_wrt_Const_116:1-sin_464:0_grad-mul_599:0">
874
+ <data key="d0">mul</data>
875
+ <data key="d1">
876
+ (gradient_wrt_Const_116:1/matmul_465:0_grad/matmul/grad_a_norm_mul_da_2 * gradient_wrt_Const_116:1/sin_464:0_grad/cos_598:0)</data>
877
+ <data key="d2">blue</data>
878
+ <data key="d9">
879
+ <y:ShapeNode>
880
+ <y:Fill color="#99CC00" transparent="false"/>
881
+ <y:NodeLabel alignment="center">mul</y:NodeLabel>
882
+ </y:ShapeNode>
883
+ </data>
884
+ </node>
885
+ <node id="gradient_wrt_Const_116:1-sin_464:0_grad-cos_598:0">
886
+ <data key="d0">cos</data>
887
+ <data key="d1">
888
+ cos(add_463:0)</data>
889
+ <data key="d2">blue</data>
890
+ <data key="d9">
891
+ <y:ShapeNode>
892
+ <y:Fill color="#99CC00" transparent="false"/>
893
+ <y:NodeLabel alignment="center">cos</y:NodeLabel>
894
+ </y:ShapeNode>
895
+ </data>
896
+ </node>
897
+ </graph>
898
+ </node>
899
+ <node id="matmul_465:0_grad" yfiles.foldertype="group">
900
+ <data key="d9">
901
+ <y:ProxyAutoBoundsNode>
902
+ <y:Realizers active="0">
903
+ <y:GroupNode>
904
+ <y:Fill color="#CAECFF84" transparent="false"/>
905
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
906
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">matmul_465:0_grad</y:NodeLabel>
907
+ <y:Shape type="roundrectangle"/>
908
+ </y:GroupNode>
909
+ </y:Realizers>
910
+ </y:ProxyAutoBoundsNode>
911
+ </data>
912
+ <graph edgedefault="directed" id="n105:">
913
+ <node id="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul_596:0">
914
+ <data key="d0">matmul</data>
915
+ <data key="d1">
916
+ gradient_wrt_Const_116:1/matmul_465:0_grad/matmul/identity0_2.matmul(Const_115:2)</data>
917
+ <data key="d2">blue</data>
918
+ <data key="d9">
919
+ <y:ShapeNode>
920
+ <y:Fill color="#99CC00" transparent="false"/>
921
+ <y:NodeLabel alignment="center">matmul</y:NodeLabel>
922
+ </y:ShapeNode>
923
+ </data>
924
+ </node>
925
+ <node id="gradient_wrt_Const_116:1-matmul_465:0_grad-Const_151:1">
926
+ <data key="d0">gradient_wrt_Const_116:1/matmul_465:0_grad/Const_151:1</data>
927
+ <data key="d2">black</data>
928
+ <data key="d9">
929
+ <y:ShapeNode>
930
+ <y:Fill color="#FFFFFF" transparent="false"/>
931
+ <y:NodeLabel alignment="center">gradient_wrt_Const_116:1/matmul_465:0_grad/Const_151:1</y:NodeLabel>
932
+ </y:ShapeNode>
933
+ </data>
934
+ </node>
935
+ <node id="matmul" yfiles.foldertype="group">
936
+ <data key="d9">
937
+ <y:ProxyAutoBoundsNode>
938
+ <y:Realizers active="0">
939
+ <y:GroupNode>
940
+ <y:Fill color="#CAECFF84" transparent="false"/>
941
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
942
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">matmul</y:NodeLabel>
943
+ <y:Shape type="roundrectangle"/>
944
+ </y:GroupNode>
945
+ </y:Realizers>
946
+ </y:ProxyAutoBoundsNode>
947
+ </data>
948
+ <graph edgedefault="directed" id="n105:">
949
+ <node id="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-grad_a_norm_mul_da_2">
950
+ <data key="d0">mul</data>
951
+ <data key="d1">
952
+ (gradient_wrt_Const_116:1/add_466:0_grad/add/reduce_sum_x_1 * gradient_wrt_Const_116:1/matmul_465:0_grad/matmul_596:0)</data>
953
+ <data key="d2">blue</data>
954
+ <data key="d9">
955
+ <y:ShapeNode>
956
+ <y:Fill color="#FFFF99" transparent="false"/>
957
+ <y:NodeLabel alignment="center">mul</y:NodeLabel>
958
+ </y:ShapeNode>
959
+ </data>
960
+ </node>
961
+ <node id="gradient_wrt_Const_116:1-matmul_465:0_grad-matmul-identity0_2">
962
+ <data key="d0">ones</data>
963
+ <data key="d1">
964
+ ones(gradient_wrt_Const_116:1/matmul_465:0_grad/Const_151:1)</data>
965
+ <data key="d2">blue</data>
966
+ <data key="d9">
967
+ <y:ShapeNode>
968
+ <y:Fill color="#99CC00" transparent="false"/>
969
+ <y:NodeLabel alignment="center">ones</y:NodeLabel>
970
+ </y:ShapeNode>
971
+ </data>
972
+ </node>
973
+ </graph>
974
+ </node>
975
+ </graph>
976
+ </node>
977
+ <node id="add_466:0_grad" yfiles.foldertype="group">
978
+ <data key="d9">
979
+ <y:ProxyAutoBoundsNode>
980
+ <y:Realizers active="0">
981
+ <y:GroupNode>
982
+ <y:Fill color="#CAECFF84" transparent="false"/>
983
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
984
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">add_466:0_grad</y:NodeLabel>
985
+ <y:Shape type="roundrectangle"/>
986
+ </y:GroupNode>
987
+ </y:Realizers>
988
+ </y:ProxyAutoBoundsNode>
989
+ </data>
990
+ <graph edgedefault="directed" id="n105:">
991
+ <node id="gradient_wrt_Const_116:1-add_466:0_grad-broadcast_gradient_args_582:0">
992
+ <data key="d0">broadcast_gradient_args</data>
993
+ <data key="d1">
994
+ broadcast_transform(gradient_wrt_Const_116:1/add_466:0_grad/add/shape_y_1,gradient_wrt_Const_116:1/add_466:0_grad/add/shape_x_1)</data>
995
+ <data key="d2">blue</data>
996
+ <data key="d9">
997
+ <y:ShapeNode>
998
+ <y:Fill color="#99CC00" transparent="false"/>
999
+ <y:NodeLabel alignment="center">broadcast_gradient_args</y:NodeLabel>
1000
+ </y:ShapeNode>
1001
+ </data>
1002
+ </node>
1003
+ <node id="add" yfiles.foldertype="group">
1004
+ <data key="d9">
1005
+ <y:ProxyAutoBoundsNode>
1006
+ <y:Realizers active="0">
1007
+ <y:GroupNode>
1008
+ <y:Fill color="#CAECFF84" transparent="false"/>
1009
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
1010
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">add</y:NodeLabel>
1011
+ <y:Shape type="roundrectangle"/>
1012
+ </y:GroupNode>
1013
+ </y:Realizers>
1014
+ </y:ProxyAutoBoundsNode>
1015
+ </data>
1016
+ <graph edgedefault="directed" id="n105:">
1017
+ <node id="gradient_wrt_Const_116:1-add_466:0_grad-add-reduce_sum_x_1">
1018
+ <data key="d0">sum</data>
1019
+ <data key="d1">
1020
+ sum(|gradient_wrt_Const_116:1/index_581:0|, axis=gradient_wrt_Const_116:1/add_466:0_grad/broadcast_gradient_args_582:0)</data>
1021
+ <data key="d2">blue</data>
1022
+ <data key="d9">
1023
+ <y:ShapeNode>
1024
+ <y:Fill color="#99CC00" transparent="false"/>
1025
+ <y:NodeLabel alignment="center">sum</y:NodeLabel>
1026
+ </y:ShapeNode>
1027
+ </data>
1028
+ </node>
1029
+ <node id="gradient_wrt_Const_116:1-add_466:0_grad-add-shape_y_1">
1030
+ <data key="d0">shape</data>
1031
+ <data key="d1">
1032
+ Const_117:1.shape</data>
1033
+ <data key="d2">blue</data>
1034
+ <data key="d9">
1035
+ <y:ShapeNode>
1036
+ <y:Fill color="#99CC00" transparent="false"/>
1037
+ <y:NodeLabel alignment="center">shape</y:NodeLabel>
1038
+ </y:ShapeNode>
1039
+ </data>
1040
+ </node>
1041
+ <node id="gradient_wrt_Const_116:1-add_466:0_grad-add-shape_x_1">
1042
+ <data key="d0">shape</data>
1043
+ <data key="d1">
1044
+ matmul_465:0.shape</data>
1045
+ <data key="d2">blue</data>
1046
+ <data key="d9">
1047
+ <y:ShapeNode>
1048
+ <y:Fill color="#99CC00" transparent="false"/>
1049
+ <y:NodeLabel alignment="center">shape</y:NodeLabel>
1050
+ </y:ShapeNode>
1051
+ </data>
1052
+ </node>
1053
+ </graph>
1054
+ </node>
1055
+ </graph>
1056
+ </node>
1057
+ <node id="sin_467:0_grad" yfiles.foldertype="group">
1058
+ <data key="d9">
1059
+ <y:ProxyAutoBoundsNode>
1060
+ <y:Realizers active="0">
1061
+ <y:GroupNode>
1062
+ <y:Fill color="#CAECFF84" transparent="false"/>
1063
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
1064
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">sin_467:0_grad</y:NodeLabel>
1065
+ <y:Shape type="roundrectangle"/>
1066
+ </y:GroupNode>
1067
+ </y:Realizers>
1068
+ </y:ProxyAutoBoundsNode>
1069
+ </data>
1070
+ <graph edgedefault="directed" id="n105:">
1071
+ <node id="gradient_wrt_Const_116:1-sin_467:0_grad-mul_579:0">
1072
+ <data key="d0">mul</data>
1073
+ <data key="d1">
1074
+ (gradient_wrt_Const_116:1/ones_like_577:0 * gradient_wrt_Const_116:1/sin_467:0_grad/cos_578:0)</data>
1075
+ <data key="d2">blue</data>
1076
+ <data key="d9">
1077
+ <y:ShapeNode>
1078
+ <y:Fill color="#99CC00" transparent="false"/>
1079
+ <y:NodeLabel alignment="center">mul</y:NodeLabel>
1080
+ </y:ShapeNode>
1081
+ </data>
1082
+ </node>
1083
+ <node id="gradient_wrt_Const_116:1-sin_467:0_grad-cos_578:0">
1084
+ <data key="d0">cos</data>
1085
+ <data key="d1">
1086
+ cos(add_466:0)</data>
1087
+ <data key="d2">blue</data>
1088
+ <data key="d9">
1089
+ <y:ShapeNode>
1090
+ <y:Fill color="#99CC00" transparent="false"/>
1091
+ <y:NodeLabel alignment="center">cos</y:NodeLabel>
1092
+ </y:ShapeNode>
1093
+ </data>
1094
+ </node>
1095
+ </graph>
1096
+ </node>
1097
+ </graph>
1098
+ </node>
1099
+ </graph>
1100
+ </node>
1101
+ <node id="program" yfiles.foldertype="group">
1102
+ <data key="d9">
1103
+ <y:ProxyAutoBoundsNode>
1104
+ <y:Realizers active="0">
1105
+ <y:GroupNode>
1106
+ <y:Fill color="#CAECFF84" transparent="false"/>
1107
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
1108
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">program</y:NodeLabel>
1109
+ <y:Shape type="roundrectangle"/>
1110
+ </y:GroupNode>
1111
+ </y:Realizers>
1112
+ </y:ProxyAutoBoundsNode>
1113
+ </data>
1114
+ <graph edgedefault="directed" id="n105:">
1115
+ <node id="program" yfiles.foldertype="group">
1116
+ <data key="d9">
1117
+ <y:ProxyAutoBoundsNode>
1118
+ <y:Realizers active="0">
1119
+ <y:GroupNode>
1120
+ <y:Fill color="#CAECFF84" transparent="false"/>
1121
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
1122
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.4609375" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="67.18603515625" x="-8.593017578125" y="0.0">program</y:NodeLabel>
1123
+ <y:Shape type="roundrectangle"/>
1124
+ </y:GroupNode>
1125
+ </y:Realizers>
1126
+ </y:ProxyAutoBoundsNode>
1127
+ </data>
1128
+ <graph edgedefault="directed" id="n105:">
1129
+ <node id="add_463:0">
1130
+ <data key="d0">add</data>
1131
+ <data key="d1">
1132
+ (matmul_462:0 + Const_116:1)</data>
1133
+ <data key="d2">blue</data>
1134
+ <data key="d9">
1135
+ <y:ShapeNode>
1136
+ <y:Fill color="#99CC00" transparent="false"/>
1137
+ <y:NodeLabel alignment="center">add</y:NodeLabel>
1138
+ </y:ShapeNode>
1139
+ </data>
1140
+ </node>
1141
+ <node id="matmul_462:0">
1142
+ <data key="d0">matmul</data>
1143
+ <data key="d1">
1144
+ Const_113:2.matmul(Const_114:2)</data>
1145
+ <data key="d2">blue</data>
1146
+ <data key="d9">
1147
+ <y:ShapeNode>
1148
+ <y:Fill color="#99CC00" transparent="false"/>
1149
+ <y:NodeLabel alignment="center">matmul</y:NodeLabel>
1150
+ </y:ShapeNode>
1151
+ </data>
1152
+ </node>
1153
+ <node id="Const_113:2">
1154
+ <data key="d0">Const_113:2</data>
1155
+ <data key="d2">black</data>
1156
+ <data key="d9">
1157
+ <y:ShapeNode>
1158
+ <y:Fill color="#FFFFFF" transparent="false"/>
1159
+ <y:NodeLabel alignment="center">Const_113:2</y:NodeLabel>
1160
+ </y:ShapeNode>
1161
+ </data>
1162
+ </node>
1163
+ <node id="Const_114:2">
1164
+ <data key="d0">Const_114:2</data>
1165
+ <data key="d2">black</data>
1166
+ <data key="d9">
1167
+ <y:ShapeNode>
1168
+ <y:Fill color="#FFFFFF" transparent="false"/>
1169
+ <y:NodeLabel alignment="center">Const_114:2</y:NodeLabel>
1170
+ </y:ShapeNode>
1171
+ </data>
1172
+ </node>
1173
+ <node id="Const_116:1">
1174
+ <data key="d0">Const_116:1</data>
1175
+ <data key="d2">black</data>
1176
+ <data key="d9">
1177
+ <y:ShapeNode>
1178
+ <y:Fill color="#FFFFFF" transparent="false"/>
1179
+ <y:NodeLabel alignment="center">Const_116:1</y:NodeLabel>
1180
+ </y:ShapeNode>
1181
+ </data>
1182
+ </node>
1183
+ <node id="add_466:0">
1184
+ <data key="d0">add</data>
1185
+ <data key="d1">
1186
+ (matmul_465:0 + Const_117:1)</data>
1187
+ <data key="d2">blue</data>
1188
+ <data key="d9">
1189
+ <y:ShapeNode>
1190
+ <y:Fill color="#99CC00" transparent="false"/>
1191
+ <y:NodeLabel alignment="center">add</y:NodeLabel>
1192
+ </y:ShapeNode>
1193
+ </data>
1194
+ </node>
1195
+ <node id="matmul_465:0">
1196
+ <data key="d0">matmul</data>
1197
+ <data key="d1">
1198
+ sin_464:0.matmul(Const_115:2)</data>
1199
+ <data key="d2">blue</data>
1200
+ <data key="d9">
1201
+ <y:ShapeNode>
1202
+ <y:Fill color="#99CC00" transparent="false"/>
1203
+ <y:NodeLabel alignment="center">matmul</y:NodeLabel>
1204
+ </y:ShapeNode>
1205
+ </data>
1206
+ </node>
1207
+ <node id="sin_464:0">
1208
+ <data key="d0">sin</data>
1209
+ <data key="d1">
1210
+ sin(add_463:0)</data>
1211
+ <data key="d2">blue</data>
1212
+ <data key="d9">
1213
+ <y:ShapeNode>
1214
+ <y:Fill color="#99CC00" transparent="false"/>
1215
+ <y:NodeLabel alignment="center">sin</y:NodeLabel>
1216
+ </y:ShapeNode>
1217
+ </data>
1218
+ </node>
1219
+ <node id="Const_115:2">
1220
+ <data key="d0">Const_115:2</data>
1221
+ <data key="d2">black</data>
1222
+ <data key="d9">
1223
+ <y:ShapeNode>
1224
+ <y:Fill color="#FFFFFF" transparent="false"/>
1225
+ <y:NodeLabel alignment="center">Const_115:2</y:NodeLabel>
1226
+ </y:ShapeNode>
1227
+ </data>
1228
+ </node>
1229
+ <node id="Const_117:1">
1230
+ <data key="d0">Const_117:1</data>
1231
+ <data key="d2">black</data>
1232
+ <data key="d9">
1233
+ <y:ShapeNode>
1234
+ <y:Fill color="#FFFFFF" transparent="false"/>
1235
+ <y:NodeLabel alignment="center">Const_117:1</y:NodeLabel>
1236
+ </y:ShapeNode>
1237
+ </data>
1238
+ </node>
1239
+ </graph>
1240
+ </node>
1241
+ </graph>
1242
+ </node>
1243
+ <edge source="-flow_group_615:" target="out">
1244
+ <data key="d13">
1245
+ <y:PolyLineEdge>
1246
+ <y:EdgeLabel >
1247
+ <![CDATA[ [[-0.18181076984697453, -0.2235356954437098]] ]]>
1248
+ </y:EdgeLabel >
1249
+ <y:Arrows source="none" target="standard"/>
1250
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
1251
+ </y:PolyLineEdge>
1252
+ </data>
1253
+ </edge>
1254
+ </graph>
1255
+ </graphml>