U
    d                     @   sX   d dl Zd dlmZmZmZ d dlmZ d dlmZ dd Z	dd Z
d	d
 Zdd ZdS )    N)	workspacecnncore)timeout_guard)
caffe2_pb2c                 C   sB   t jddddd}|| _t jdddddd}|| _| jd d S )	NZNCHWZresnetTF)ordername	use_cudnncudnn_exhaustive_searchZresnet_test)r   r   r	   r
   Zinit_paramszModel creation completed)r   ZCNNModelHelpertrain_model
test_modelloginfo)selfr   r    r   T/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/contrib/playground/resnetdemo/IN1k_resnet.py
init_model   s     r   c                 C   s   d S )Nr   )r   epochr   r   r   fun_per_epoch_b4RunNet"   s    r   c              
   C   s   d}t | jd d | jd d | jd d  D ]j}| jd d dkrLtjntj}tt||0 t	d
| jd d |tj|tjd W 5 Q R X q0d S )	Ng?ZdistributedZfirst_xpu_idZnum_xpusZdeviceZgpuz{}_{}/lr)Zdtype)rangeoptsr   ZCUDAZCPUr   ZDeviceScopeZDeviceOptionr   ZFeedBlobformatnparrayZfloat32)r   r   Z
epoch_iterZlearning_rateidxZcaffe2_pb2_devicer   r   r   fun_per_iter_b4RunNet&   s    r   c              	   C   s2   d}t | t| jj j W 5 Q R X d S )Ng     @@)r   ZCompleteInTimeOrDier   ZRunNetr   netZProtor   )r   timeoutr   r   r   run_training_net6   s    r   )Znumpyr   Zcaffe2.pythonr   r   r   r   Zcaffe2.protor   r   r   r   r   r   r   r   r   <module>   s   