Files
candle/candle-examples/examples/stable-diffusion/utils.rs
Laurent Mazare 166bfd5847 Add the recip op + use it in stable-diffusion. (#331)
* Add the recip unary op.

* Fix the cuda kernel.

* Use the recip op in sigmoid.
2023-08-06 21:14:52 +01:00

30 lines
735 B
Rust

use candle::{Device, Result, Tensor};
pub fn sigmoid(xs: &Tensor) -> Result<Tensor> {
// TODO: Add sigmoid as binary ops.
(xs.neg()?.exp()? - 1.0)?.recip()
}
pub fn avg_pool2d(_: &Tensor) -> Result<Tensor> {
todo!()
}
pub fn pad(_: &Tensor) -> Result<Tensor> {
todo!()
}
pub fn upsample_nearest2d(_: &Tensor) -> Result<Tensor> {
todo!()
}
pub fn linspace(start: f64, stop: f64, steps: usize) -> Result<Tensor> {
if steps < 1 {
candle::bail!("cannot use linspace with steps {steps} <= 1")
}
let delta = (stop - start) / (steps - 1) as f64;
let vs = (0..steps)
.map(|step| start + step as f64 * delta)
.collect::<Vec<_>>();
Tensor::from_vec(vs, steps, &Device::Cpu)
}