o
    b²“i¢  ã                   @   sl   d dl Z d dlmZ d dlmZ G dd„ deƒZd dlZej dd„ edƒD ƒ¡Z	ed	e	id
Z
e
 ¡ ZdS )é    N)Útrain)ÚBaseTrainerc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMyPytorchTrainerc                 C   s,   t j dd¡| _t jj| j ¡ dd| _d S )Né   gš™™™™™¹?)Úlr)ÚtorchÚnnÚLinearÚmodelÚoptimÚSGDÚ
parametersÚ	optimizer)Úself© r   úS/home/ubuntu/.local/lib/python3.10/site-packages/ray/air/examples/custom_trainer.pyÚsetup   s   zMyPytorchTrainer.setupc                 C   s¸   | j d }tj ¡ }tdƒD ]K}d}d}|jtjdD ]1}t |d d¡|d }}|  |¡}	||	|ƒ}
| j	 
¡  |
 ¡  | j	 ¡  ||
 ¡ 7 }|d7 }q|| }t ||dœ¡ qd S )	Nr   é
   r   )ÚdtypesÚxr   Úy)ÚlossÚepoch)Údatasetsr   r   ÚMSELossÚrangeÚiter_torch_batchesÚfloatÚ	unsqueezer
   r   Ú	zero_gradÚbackwardÚstepÚitemr   Úreport)r   ÚdatasetÚloss_fnÚ	epoch_idxr   Únum_batchesÚbatchÚXr   ÚpredÚ
batch_lossr   r   r   Útraining_loop   s"   






ìzMyPytorchTrainer.training_loopN)Ú__name__Ú
__module__Ú__qualname__r   r,   r   r   r   r   r      s    r   c                 C   s   g | ]}||d œ‘qS ))r   r   r   )Ú.0Úir   r   r   Ú
<listcomp>9   s    r2   é   r   )r   )r   Úrayr   Úray.train.trainerr   r   ÚdataÚ
from_itemsr   Útrain_datasetÚ
my_trainerÚfitÚresultr   r   r   r   Ú<module>   s   *