


'''simple docstring'''

import unittest

import numpy as np
import torch

from diffusers import PNDMPipeline, PNDMScheduler, UNetaDModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()
class _lowerCamelCase	(						unittest.TestCase							):



		'''simple docstring'''







		@property
		def        __lowerCAmelCase		( self		:						Optional[int]      )  ->			Union[str, Any]:
			torch.manual_seed(0      )
			__magic_name__	:   Dict					     =					UNetaDModel(
			    block_out_channels=(32, 64)  ,					layers_per_block=2  ,					sample_size=32  ,					in_channels=3  ,					out_channels=3  ,					down_block_types=('DownBlock2D', 'AttnDownBlock2D')  ,					up_block_types=('AttnUpBlock2D', 'UpBlock2D')  ,					)
			return model







		def        __lowerCAmelCase		( self		:						int      )  ->			List[str]:
			__magic_name__	:   Optional[int]					     =					self.dummy_uncond_unet
			__magic_name__	:   Optional[int]					     =					PNDMScheduler()

			__magic_name__	:   Optional[int]					     =					PNDMPipeline(unet=_A  ,					scheduler=_A      )
			pndm.to(_A      )
			pndm.set_progress_bar_config(disable=_A      )

			__magic_name__	:   Optional[int]					     =					torch.manual_seed(0      )
			__magic_name__	:   Dict					     =					pndm(generator=_A  ,					num_inference_steps=20  ,					output_type='numpy'      ).images

			__magic_name__	:   str					     =					torch.manual_seed(0      )
			__magic_name__	:   Tuple					     =					pndm(generator=_A  ,					num_inference_steps=20  ,					output_type='numpy'  ,					return_dict=_A      )[0]

			__magic_name__	:   Dict					     =					image[0, -3:, -3:, -1]
			__magic_name__	:   Tuple					     =					image_from_tuple[0, -3:, -3:, -1]

			assert image.shape == (1, 32, 32, 3)
			__magic_name__	:   Any					     =					np.array([1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0]      )

			assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-2
			assert np.abs(image_from_tuple_slice.flatten() - expected_slice      ).max() < 1E-2


@slow
@require_torch
class _lowerCamelCase	(						unittest.TestCase							):



		'''simple docstring'''







		def        __lowerCAmelCase		( self		:						Any      )  ->			List[str]:
			__magic_name__	:   Optional[Any]					     =					'google/ddpm-cifar10-32'

			__magic_name__	:   List[str]					     =					UNetaDModel.from_pretrained(_A      )
			__magic_name__	:   Optional[Any]					     =					PNDMScheduler()

			__magic_name__	:   int					     =					PNDMPipeline(unet=_A  ,					scheduler=_A      )
			pndm.to(_A      )
			pndm.set_progress_bar_config(disable=_A      )
			__magic_name__	:   Optional[Any]					     =					torch.manual_seed(0      )
			__magic_name__	:   Any					     =					pndm(generator=_A  ,					output_type='numpy'      ).images

			__magic_name__	:   Tuple					     =					image[0, -3:, -3:, -1]

			assert image.shape == (1, 32, 32, 3)
			__magic_name__	:   Optional[int]					     =					np.array([0.1564, 0.1_4645, 0.1406, 0.1_4715, 0.1_2425, 0.1_4045, 0.1_3115, 0.1_2175, 0.125]      )

			assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-2



'''simple docstring'''

import unittest

import numpy as np
import torch

from diffusers import KarrasVePipeline, KarrasVeScheduler, UNetaDModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()
class _lowerCamelCase	(						unittest.TestCase							):



		'''simple docstring'''







		@property
		def        __lowerCAmelCase		( self		:						Dict      )  ->			List[str]:
			torch.manual_seed(0      )
			__magic_name__	:   Dict					     =					UNetaDModel(
			    block_out_channels=(32, 64)  ,					layers_per_block=2  ,					sample_size=32  ,					in_channels=3  ,					out_channels=3  ,					down_block_types=('DownBlock2D', 'AttnDownBlock2D')  ,					up_block_types=('AttnUpBlock2D', 'UpBlock2D')  ,					)
			return model







		def        __lowerCAmelCase		( self		:						str      )  ->			Any:
			__magic_name__	:   Union[str, Any]					     =					self.dummy_uncond_unet
			__magic_name__	:   str					     =					KarrasVeScheduler()

			__magic_name__	:   List[Any]					     =					KarrasVePipeline(unet=_A  ,					scheduler=_A      )
			pipe.to(_A      )
			pipe.set_progress_bar_config(disable=_A      )

			__magic_name__	:   Dict					     =					torch.manual_seed(0      )
			__magic_name__	:   int					     =					pipe(num_inference_steps=2  ,					generator=_A  ,					output_type='numpy'      ).images

			__magic_name__	:   Any					     =					torch.manual_seed(0      )
			__magic_name__	:   str					     =					pipe(num_inference_steps=2  ,					generator=_A  ,					output_type='numpy'  ,					return_dict=_A      )[0]

			__magic_name__	:   int					     =					image[0, -3:, -3:, -1]
			__magic_name__	:   str					     =					image_from_tuple[0, -3:, -3:, -1]

			assert image.shape == (1, 32, 32, 3)
			__magic_name__	:   List[Any]					     =					np.array([0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0]      )

			assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-2
			assert np.abs(image_from_tuple_slice.flatten() - expected_slice      ).max() < 1E-2







@slow
@require_torch
class _lowerCamelCase	(						unittest.TestCase							):



		'''simple docstring'''







		def        __lowerCAmelCase		( self		:						List[Any]      )  ->			str:
			__magic_name__	:   Optional[int]					     =					'google/ncsnpp-celebahq-256'
			__magic_name__	:   List[str]					     =					UNetaDModel.from_pretrained(_A      )
			__magic_name__	:   int					     =					KarrasVeScheduler()

			__magic_name__	:   str					     =					KarrasVePipeline(unet=_A  ,					scheduler=_A      )
			pipe.to(_A      )
			pipe.set_progress_bar_config(disable=_A      )

			__magic_name__	:   Any					     =					torch.manual_seed(0      )
			__magic_name__	:   Union[str, Any]					     =					pipe(num_inference_steps=20  ,					generator=_A  ,					output_type='numpy'      ).images

			__magic_name__	:   List[str]					     =					image[0, -3:, -3:, -1]
			assert image.shape == (1, 256, 256, 3)
			__magic_name__	:   int					     =					np.array([0.578, 0.5811, 0.5924, 0.5809, 0.587, 0.5886, 0.5861, 0.5802, 0.586]      )

			assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1E-2