Function tract_libcli::tensor::random
source · pub fn random(
sizes: &[usize],
datum_type: DatumType,
tv: Option<&TensorValues>
) -> TensorExpand description
Generates a random tensor of a given size and type.
Examples found in repository?
src/tensor.rs (lines 417-423)
389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424
pub fn tensor_for_fact(
fact: &TypedFact,
streaming_dim: Option<usize>,
tv: Option<&TensorValues>,
) -> TractResult<Tensor> {
if let Some(value) = &fact.konst {
return Ok(value.clone().into_tensor());
}
#[cfg(pulse)]
{
if fact.shape.stream_info().is_some() {
use tract_pulse::fact::StreamFact;
use tract_pulse::internal::stream_symbol;
let s = stream_symbol();
if let Some(dim) = streaming_dim {
let shape = fact
.shape
.iter()
.map(|d| {
d.eval(&SymbolValues::default().with(s, dim as i64)).to_usize().unwrap()
})
.collect::<TVec<_>>();
return Ok(random(&shape, fact.datum_type));
} else {
bail!("random tensor requires a streaming dim")
}
}
}
Ok(random(
fact.shape
.as_concrete()
.with_context(|| format!("Expected concrete shape, found: {:?}", fact))?,
fact.datum_type,
tv,
))
}