Class: Gsplat::Ops::CameraBroadcast

Inherits:
Autograd::Function show all
Defined in:
lib/gsplat/ops/tensor_shape_ops.rb

Overview

Adds a leading camera dimension to a tensor.

Class Method Summary collapse

Methods inherited from Autograd::Function

apply

Class Method Details

.backward(_context, gradient) ⇒ Object



36
37
38
# File 'lib/gsplat/ops/tensor_shape_ops.rb', line 36

def backward(_context, gradient)
  [gradient.sum(axis: 0), nil]
end

.forward(context, value, camera_count) ⇒ Object

Raises:

  • (ArgumentError)


24
25
26
27
28
29
30
31
32
33
34
# File 'lib/gsplat/ops/tensor_shape_ops.rb', line 24

def forward(context, value, camera_count)
  valid_count = camera_count.is_a?(Integer) && camera_count.positive?
  raise ArgumentError, "camera_count must be positive" unless valid_count

  context.save(value.shape)
  output = value.class.zeros(*([camera_count] + value.shape))
  camera_count.times do |camera_index|
    output[*([camera_index] + Array.new(value.ndim, true))] = value
  end
  output
end