a
    dt                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZmZ G dd deZ	G dd dej
Ze jdd	 Ze jd
d Ze jdd Ze jdd Ze jdd Ze jdd ZG dd dZdS )    N)Dataset)ConfigurationObjectDetectionTrainerc                   @   s   e Zd Zdd Zdd ZdS )DummyDatasetDetectionc                 C   s   dS )N
    selfr   r   ^/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/test/x/test_detection.py__len__
   s    zDummyDatasetDetection.__len__c                 C   s   t dddt g dfS )N       )      $@r         .@r   )torchZonesZtensor)r	   indexr   r   r
   __getitem__   s    z!DummyDatasetDetection.__getitem__N)__name__
__module____qualname__r   r   r   r   r   r
   r   	   s   r   c                       s&   e Zd Z fddZdddZ  ZS )
DummyModelc                    s.   t    ttjdddddt | _d S )Nr         )Zkernel_sizeZstride)super__init__nnZ
SequentialZConv2dZFlattenmodelr   	__class__r   r
   r      s    
zDummyModel.__init__Nc                 C   s
   |  |S Nr   )r	   xyr   r   r
   forward   s    zDummyModel.forward)N)r   r   r   r   r#   __classcell__r   r   r   r
   r      s   r   c                   C   s   t  S r   )r   r   r   r   r
   r      s    r   c                  C   s   t  } tjjj| ddS )Nr   )Z
batch_size)r   r   utilsdataZ
DataLoader)Zdatasetr   r   r
   
dataloader   s    r'   c                   C   s   t  S r   )r   ZMSELossr   r   r   r
   	criterion%   s    r(   c                 C   s   t j|  S r   )r   optimZAdamW
parametersr    r   r   r
   	optimizer*   s    r+   c                 C   s   t jj| t|S r   )r   r)   Zlr_schedulerZCosineAnnealingLRlen)r+   r'   r   r   r
   	scheduler/   s    r-   c                  C   s   t  } d| _| S )Nr   )r   Z
num_epochs)configr   r   r
   configuration4   s    r/   c                   @   s.   e Zd Zejdddgdd Zdd ZdS )	TestObjectDetectionTrainerloss_computed_by_modelTFc           	      C   s&   t |||||||d|d	}|  d S )Nr   )num_classesr1   )r   Zfit)	r	   r   r'   r(   r+   r-   r/   r1   Ztrainerr   r   r
   test_fit<   s    z#TestObjectDetectionTrainer.test_fitc                 C   sL   t t. t|||||||ddd id	 W d    n1 s>0    Y  d S )Nr   Zfrodo)r2   	callbacks)pytestZraises
ValueErrorr   )r	   r   r'   r(   r+   r-   r/   r   r   r
   test_exceptionK   s    z)TestObjectDetectionTrainer.test_exceptionN)r   r   r   r5   markZparametrizer3   r7   r   r   r   r
   r0   ;   s   
r0   )r5   r   Ztorch.nnr   Ztorch.utils.datar   Zkornia.xr   r   r   Moduler   Zfixturer   r'   r(   r+   r-   r/   r0   r   r   r   r
   <module>   s&   	





