Sha256: b25aca5f65ac712ef8db4deb957aad83452a6910671fe1f1d28d878b4843a156

Contents?: true

Size: 551 Bytes

Versions: 9

Compression:

Stored size: 551 Bytes

Contents

TensorStream::OpMaker.define_operation :mul do |op|
  op.what_it_does "Returns x * y element-wise."

  op.parameter :input_a, "tensor X"
  op.parameter :input_b, "tensor Y"

  op.apply_data_type_coercion!
  op.supports_broadcasting!

  op.option :name, "Optional name", :nil

  op.define_gradient do |grad, node, params|
    x, y = params
    sx = ts.shape(x)
    sy = ts.shape(y)
    rx, ry = _broadcast_gradient_args(sx, sy)

    [ts.reshape(ts.reduce_sum(ts.mul(grad, y), rx), sx),
     ts.reshape(ts.reduce_sum(ts.mul(x, grad), ry), sy)]
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
tensor_stream-1.0.9 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.8 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.7 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.6 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.5 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.4 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.3 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.2 lib/tensor_stream/ops/mul.rb
tensor_stream-1.0.1 lib/tensor_stream/ops/mul.rb