Returns a tensor filled with the scalar value 0.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(torch_tensor), | intent(out) | :: | tensor |
Returned tensor |
||
integer(kind=c_int), | intent(in) | :: | ndims |
Number of dimensions of the tensor |
||
integer(kind=c_int64_t), | intent(in) | :: | tensor_shape(*) |
Shape of the tensor |
||
integer(kind=c_int), | intent(in) | :: | dtype |
Data type of the tensor |
||
integer(kind=c_int), | intent(in) | :: | device_type |
Device type the tensor will live on ( |
||
integer(kind=c_int), | intent(in), | optional | :: | device_index |
device index to use for |
|
logical(kind=c_bool), | intent(in), | optional | :: | requires_grad |
Whether gradients need to be computed for the created tensor |
subroutine torch_tensor_zeros(tensor, ndims, tensor_shape, dtype, & device_type, device_index, requires_grad) use, intrinsic :: iso_c_binding, only : c_bool, c_int, c_int64_t type(torch_tensor), intent(out) :: tensor !! Returned tensor integer(c_int), intent(in) :: ndims !! Number of dimensions of the tensor integer(c_int64_t), intent(in) :: tensor_shape(*) !! Shape of the tensor integer(c_int), intent(in) :: dtype !! Data type of the tensor integer(c_int), intent(in) :: device_type !! Device type the tensor will live on (`torch_kCPU` or `torch_kCUDA`) integer(c_int), optional, intent(in) :: device_index !! device index to use for `torch_kCUDA` case logical(c_bool), optional, intent(in) :: requires_grad !! Whether gradients need to be computed for the created tensor integer(c_int) :: device_index_value !! device index used logical(c_bool) :: requires_grad_value !! Whether gradients need to be computed for the created tensor interface function torch_zeros_c(ndims, tensor_shape, dtype, & device_type, device_index, requires_grad) result(tensor) & bind(c, name = 'torch_zeros') use, intrinsic :: iso_c_binding, only : c_bool, c_int, c_int64_t, c_ptr implicit none integer(c_int), value, intent(in) :: ndims integer(c_int64_t), intent(in) :: tensor_shape(*) integer(c_int), value, intent(in) :: dtype integer(c_int), value, intent(in) :: device_type integer(c_int), value, intent(in) :: device_index logical(c_bool), value, intent(in) :: requires_grad type(c_ptr) :: tensor end function torch_zeros_c end interface ! Process optional arguments if (present(device_index)) then device_index_value = device_index else if (device_type == torch_kCPU) then device_index_value = -1 else device_index_value = 0 endif if (.not. present(requires_grad)) then requires_grad_value = logical(.false., c_bool) else requires_grad_value = requires_grad end if tensor%p = torch_zeros_c(ndims, tensor_shape, dtype, device_type, & device_index_value, requires_grad_value) end subroutine torch_tensor_zeros