summaryrefslogtreecommitdiff
path: root/candle-examples/examples/stable-diffusion
diff options
context:
space:
mode:
authorLaurent Mazare <laurent.mazare@gmail.com>2023-08-07 16:24:56 +0200
committerGitHub <noreply@github.com>2023-08-07 15:24:56 +0100
commitf53a333ea91233b41dd946c2c30213c79b4d1cb3 (patch)
treee9e525b6161f7fb31010ac26461f241729b22d75 /candle-examples/examples/stable-diffusion
parente72ba0b9e755bbac5bd60718765c043bba3a63dc (diff)
downloadcandle-f53a333ea91233b41dd946c2c30213c79b4d1cb3.tar.gz
candle-f53a333ea91233b41dd946c2c30213c79b4d1cb3.tar.bz2
candle-f53a333ea91233b41dd946c2c30213c79b4d1cb3.zip
Simple pad support. (#336)
* Simple pad support. * Fix the tensor indexing when padding.
Diffstat (limited to 'candle-examples/examples/stable-diffusion')
-rw-r--r--candle-examples/examples/stable-diffusion/embeddings.rs2
-rw-r--r--candle-examples/examples/stable-diffusion/unet_2d_blocks.rs6
-rw-r--r--candle-examples/examples/stable-diffusion/utils.rs4
3 files changed, 5 insertions, 7 deletions
diff --git a/candle-examples/examples/stable-diffusion/embeddings.rs b/candle-examples/examples/stable-diffusion/embeddings.rs
index f8a4f351..848f1760 100644
--- a/candle-examples/examples/stable-diffusion/embeddings.rs
+++ b/candle-examples/examples/stable-diffusion/embeddings.rs
@@ -57,7 +57,7 @@ impl Timesteps {
Tensor::cat(&[&sin, &cos], D::Minus1)?
};
if self.num_channels % 2 == 1 {
- crate::utils::pad(&emb) // ([0, 1, 0, 0], 'constant', None)
+ emb.pad_with_zeros(D::Minus2, 0, 1)
} else {
Ok(emb)
}
diff --git a/candle-examples/examples/stable-diffusion/unet_2d_blocks.rs b/candle-examples/examples/stable-diffusion/unet_2d_blocks.rs
index 8dd6cf26..4d0c80a5 100644
--- a/candle-examples/examples/stable-diffusion/unet_2d_blocks.rs
+++ b/candle-examples/examples/stable-diffusion/unet_2d_blocks.rs
@@ -5,7 +5,7 @@ use crate::attention::{
AttentionBlock, AttentionBlockConfig, SpatialTransformer, SpatialTransformerConfig,
};
use crate::resnet::{ResnetBlock2D, ResnetBlock2DConfig};
-use candle::{Result, Tensor};
+use candle::{Result, Tensor, D};
use candle_nn as nn;
#[derive(Debug)]
@@ -39,7 +39,9 @@ impl Downsample2D {
None => crate::utils::avg_pool2d(xs), // [2, 2], [2, 2], [0, 0], false, true, None),
Some(conv) => {
if self.padding == 0 {
- let xs = crate::utils::pad(xs)?; // [0, 1, 0, 1], "constant", Some(0.))?;
+ let xs = xs
+ .pad_with_zeros(D::Minus1, 0, 1)?
+ .pad_with_zeros(D::Minus2, 0, 1)?;
conv.forward(&xs)
} else {
conv.forward(xs)
diff --git a/candle-examples/examples/stable-diffusion/utils.rs b/candle-examples/examples/stable-diffusion/utils.rs
index 4294d823..08b78c04 100644
--- a/candle-examples/examples/stable-diffusion/utils.rs
+++ b/candle-examples/examples/stable-diffusion/utils.rs
@@ -4,10 +4,6 @@ pub fn avg_pool2d(_: &Tensor) -> Result<Tensor> {
todo!()
}
-pub fn pad(_: &Tensor) -> Result<Tensor> {
- todo!()
-}
-
pub fn upsample_nearest2d(_: &Tensor) -> Result<Tensor> {
todo!()
}