Skip to content
Snippets Groups Projects
Commit 3ed378ba authored by Filip Naiser's avatar Filip Naiser
Browse files

Merge branch 'master' of gitlab.fel.cvut.cz:mishkdmy/mpv-python-assignment-templates

parents 77e0dee3 dcf87f75
Branches main
No related tags found
No related merge requests found
Showing
with 845 additions and 688 deletions
...@@ -35,6 +35,26 @@ conda env create -f environment-cpu.yml ...@@ -35,6 +35,26 @@ conda env create -f environment-cpu.yml
conda env create -f environment-gpu.yml conda env create -f environment-gpu.yml
``` ```
If way above does not work for you (e.g. you are on Windows), try the following for CPU:
```bash
conda create --name mpv-assignments-cpu-only python=3.6
conda activate mpv-assignments-cpu-only
conda install pytorch torchvision cpuonly -c pytorch
pip install kornia tqdm notebook matplotlib opencv-contrib-python seaborn tensorboard tensorboardX
conda install -c conda-forge widgetsnbextension
conda install -c conda-forge ipywidgets
```
And following for GPU:
```bash
conda create --name mpv-assignments-gpu python=3.6
conda activate mpv-assignments-gpu
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
pip install kornia tqdm notebook matplotlib opencv-contrib-python seaborn tensorboard tensorboardX
conda install -c conda-forge widgetsnbextension
conda install -c conda-forge ipywidgets
```
**Keep in mind that the assignments and the assignment templates will be updated during the semester. Always pull the current template version before starting to work on an assignment!** **Keep in mind that the assignments and the assignment templates will be updated during the semester. Always pull the current template version before starting to work on an assignment!**
...@@ -7,18 +7,22 @@ import typing ...@@ -7,18 +7,22 @@ import typing
from typing import Tuple, List from typing import Tuple, List
from PIL import Image from PIL import Image
import os import os
from tqdm import tqdm from tqdm import tqdm_notebook as tqdm
from time import time from time import time
def get_dataset_statistics(dataset: torch.utils.data.Dataset) -> Tuple[List, List]: def get_dataset_statistics(dataset: torch.utils.data.Dataset) -> Tuple[List, List]:
'''Function, that calculates mean and std of a dataset (pixelwise)''' '''Function, that calculates mean and std of a dataset (pixelwise)
Return:
tuple of Lists of floats. len of each list should equal to number of input image/tensor channels
'''
mean = [0., 0., 0.] mean = [0., 0., 0.]
std = [1.0, 1.0, 1.0] std = [1.0, 1.0, 1.0]
return mean, std return mean, std
class SimpleCNN(nn.Module): class SimpleCNN(nn.Module):
"""Class, which implements image classifier. """
def __init__(self, num_classes = 10): def __init__(self, num_classes = 10):
super(SimpleCNN, self).__init__() super(SimpleCNN, self).__init__()
self.features = nn.Sequential( self.features = nn.Sequential(
...@@ -49,43 +53,68 @@ class SimpleCNN(nn.Module): ...@@ -49,43 +53,68 @@ class SimpleCNN(nn.Module):
nn.Flatten(), nn.Flatten(),
nn.Linear(512, num_classes)) nn.Linear(512, num_classes))
return return
def forward(self, input): def forward(self, input):
"""
Shape:
- Input :math:`(B, C, H, W)`
- Output: :math:`(B, NC)`, where NC is num_classes
"""
x = self.features(input) x = self.features(input)
return self.clf(x) return self.clf(x)
def weight_init(m: nn.Module): def weight_init(m: nn.Module) -> None:
'''Function, which fills-in weights and biases for convolutional and linear layers''' '''Function, which fills-in weights and biases for convolutional and linear layers'''
if isinstance(m, nn.Conv2d) or isinstance(m, nn.Linear): if isinstance(m, nn.Conv2d) or isinstance(m, nn.Linear):
pass #do something #do something here. You can access layer weight or bias by m.weight or m.bias
pass #do something
return return
def train_single_epoch(model: torch.nn.Module, def train_and_val_single_epoch(model: torch.nn.Module,
train_loader: torch.utils.data.DataLoader, train_loader: torch.utils.data.DataLoader,
val_loader: torch.utils.data.DataLoader,
optim: torch.optim.Optimizer, optim: torch.optim.Optimizer,
loss_fn: torch.nn.Module) -> torch.nn.Module: loss_fn: torch.nn.Module,
'''Function, which runs training over a single epoch in the dataloader and returns the model''' epoch_idx = 0,
lr_scheduler = None,
writer = None) -> torch.nn.Module:
'''Function, which runs training over a single epoch in the dataloader and returns the model. Do not forget to set the model into train mode and zero_grad() optimizer before backward.'''
if epoch_idx == 0:
val_acc, val_loss = validate(model, val_loader, loss_fn)
if writer is not None:
writer.add_scalar("Accuracy/val", val_acc, 0)
writer.add_scalar("Loss/val", val_loss, 0)
model.train() model.train()
for idx, (data, labels) in tqdm(enumerate(train_loader), total=num_batches):
pass #do something
return model return model
def lr_find(model, train_dl, loss_fn, min_lr=1e-7, max_lr=100, steps = 50): def lr_find(model: torch.nn.Module,
'''Function, which runs the mock training over with different learning rates''' train_dl:torch.utils.data.DataLoader,
loss_fn:torch.nn.Module,
min_lr: float=1e-7, max_lr:float=100, steps:int = 50)-> Tuple:
'''Function, which run the training for a small number of iterations, increasing the learning rate and storing the losses. Model initialization is saved before training and restored after training'''
lrs = np.ones(steps) lrs = np.ones(steps)
losses = np.ones(steps) losses = np.ones(steps)
return losses, lrs return losses, lrs
def validate(model: torch.nn.Module, val_loader: torch.utils.data.DataLoader) -> float: def validate(model: torch.nn.Module,
val_loader: torch.utils.data.DataLoader,
loss_fn: torch.nn.Module) -> float:
'''Function, which runs the module over validation set and returns accuracy''' '''Function, which runs the module over validation set and returns accuracy'''
print ("Starting validation") print ("Starting validation")
acc = 0 acc = 0
return acc loss = 0
for idx, (data, labels) in tqdm(enumerate(val_loader), total=len(val_loader)):
with torch.no_grad():
pass #do something
return acc, loss
class TestFolderDataset(torch.utils.data.Dataset): class TestFolderDataset(torch.utils.data.Dataset):
'''''' '''Class, which reads images in folder and serves as test dataset'''
def __init__(self, folder_name, transform = None): def __init__(self, folder_name, transform = None):
return return
def __getitem__(self, index): def __getitem__(self, index):
...@@ -96,7 +125,7 @@ class TestFolderDataset(torch.utils.data.Dataset): ...@@ -96,7 +125,7 @@ class TestFolderDataset(torch.utils.data.Dataset):
return ln return ln
def get_predictions(model, test_dl): def get_predictions(model: torch.nn.Module, test_dl: torch.utils.data.DataLoader)->torch.Tensor :
'''Outputs prediction over test data loader''' '''Function, which predicts class indexes for image in data loader. Ouput shape: [N, 1], where N is number of image in the dataset'''
out = torch.zeros(len(test_dl)).long() out = torch.zeros(len(test_dl)).long()
return out return out
This diff is collapsed.
assignment_6_7_cnn_template/training-imagenette-CNN_files/att_00000.png

27.1 KiB

assignment_6_7_cnn_template/training-imagenette-CNN_files/att_00001.png

70.9 KiB

assignment_6_7_cnn_template/training-imagenette-CNN_files/att_00002.png

114 KiB

assignment_6_7_cnn_template/training-imagenette-CNN_files/att_00003.png

28.7 KiB

assignment_6_7_cnn_template/training-imagenette-CNN_files/att_00004.png

111 KiB

assignment_6_7_cnn_template/training-imagenette-CNN_files/att_00005.png

123 KiB

name: mpv-assignments-cpu-only name: mpv-assignments-cpu-only
channels: channels:
- pytorch - pytorch
- conda-forge
- defaults - defaults
dependencies: dependencies:
- _anaconda_depends=2019.03=py36_0 - _libgcc_mutex=0.1
- _libgcc_mutex=0.1=main - attrs=19.3.0
- alabaster=0.7.12=py36_0 - backcall=0.1.0
- anaconda=custom=py36_1 - blas=1.0
- anaconda-client=1.7.2=py36_0 - bleach=3.1.4
- anaconda-project=0.8.4=py_0 - ca-certificates=2020.4.5.1
- asn1crypto=1.3.0=py36_0 - certifi=2020.4.5.1
- astroid=2.3.3=py36_0 - cpuonly=1.0
- astropy=4.0=py36h7b6447c_0 - decorator=4.4.2
- atomicwrites=1.3.0=py36_1 - defusedxml=0.6.0
- attrs=19.3.0=py_0 - entrypoints=0.3
- babel=2.8.0=py_0 - freetype=2.9.1
- backcall=0.1.0=py36_0 - importlib-metadata=1.6.0
- backports=1.0=py_2 - importlib_metadata=1.6.0
- backports.os=0.1.1=py36_0 - intel-openmp=2020.0
- backports.shutil_get_terminal_size=1.0.0=py36_2 - ipykernel=5.2.1
- beautifulsoup4=4.8.2=py36_0 - ipython=7.13.0
- bitarray=1.2.1=py36h7b6447c_0 - ipython_genutils=0.2.0
- bkcharts=0.2=py36_0 - ipywidgets=7.5.1
- blas=1.0=mkl - jedi=0.17.0
- bleach=3.1.0=py36_0 - jinja2=2.11.2
- blosc=1.16.3=hd408876_0 - jpeg=9b
- bokeh=1.4.0=py36_0 - jsonschema=3.2.0
- boto=2.49.0=py36_0 - jupyter_client=6.1.3
- bottleneck=1.3.1=py36hdd07704_0 - jupyter_core=4.6.3
- bzip2=1.0.8=h7b6447c_0 - ld_impl_linux-64=2.33.1
- ca-certificates=2020.1.1=0 - libedit=3.1.20181209
- cairo=1.14.12=h8948797_3 - libffi=3.2.1
- certifi=2019.11.28=py36_0 - libgcc-ng=9.1.0
- cffi=1.14.0=py36h2e261b9_0 - libgfortran-ng=7.3.0
- chardet=3.0.4=py36_1003 - libpng=1.6.37
- click=7.0=py36_0 - libsodium=1.0.17
- cloudpickle=1.3.0=py_0 - libstdcxx-ng=9.1.0
- clyent=1.2.2=py36_1 - libtiff=4.1.0
- colorama=0.4.3=py_0 - markupsafe=1.1.1
- contextlib2=0.6.0.post1=py_0 - mistune=0.8.4
- cpuonly=1.0=0 - mkl=2020.0
- cryptography=2.8=py36h1ba5d50_0 - mkl-service=2.3.0
- curl=7.68.0=hbc83047_0 - mkl_fft=1.0.15
- cycler=0.10.0=py36_0 - mkl_random=1.1.0
- cython=0.29.15=py36he6710b0_0 - nbconvert=5.6.1
- cytoolz=0.10.1=py36h7b6447c_0 - nbformat=5.0.6
- dask=2.10.1=py_0 - ncurses=6.2
- dask-core=2.10.1=py_0 - ninja=1.9.0
- dbus=1.13.12=h746ee38_0 - notebook=6.0.3
- decorator=4.4.1=py_0 - numpy=1.18.1
- defusedxml=0.6.0=py_0 - numpy-base=1.18.1
- distributed=2.10.0=py_0 - olefile=0.46
- docutils=0.16=py36_0 - openssl=1.1.1f
- entrypoints=0.3=py36_0 - pandoc=2.9.2.1
- et_xmlfile=1.0.1=py36_0 - parso=0.7.0
- expat=2.2.6=he6710b0_0 - pexpect=4.8.0
- fastcache=1.1.0=py36h7b6447c_0 - pickleshare=0.7.5
- flask=1.1.1=py_0 - pillow=7.0.0
- fontconfig=2.13.0=h9420a91_0 - pip=20.0.2
- freetype=2.9.1=h8a8886c_1 - prometheus_client=0.7.1
- fribidi=1.0.5=h7b6447c_0 - prompt-toolkit=3.0.5
- fsspec=0.6.2=py_0 - ptyprocess=0.6.0
- get_terminal_size=1.0.0=haa9412d_0 - pygments=2.6.1
- gevent=1.4.0=py36h7b6447c_0 - pyrsistent=0.16.0
- glib=2.63.1=h5a9c865_0 - python=3.6.10
- gmp=6.1.2=h6c8ec71_1 - python-dateutil=2.8.1
- gmpy2=2.0.8=py36h10f8cd9_2 - python_abi=3.6
- graphite2=1.3.13=h23475e2_0 - pytorch=1.4.0
- greenlet=0.4.15=py36h7b6447c_0 - readline=8.0
- gst-plugins-base=1.14.0=hbbd80ab_1 - send2trash=1.5.0
- gstreamer=1.14.0=hb453b48_1 - setuptools=46.1.3
- h5py=2.10.0=py36h7918eee_0 - six=1.14.0
- harfbuzz=1.8.8=hffaf4a1_0 - sqlite=3.31.1
- hdf5=1.10.4=hb1b8bf9_0 - testpath=0.4.4
- heapdict=1.0.1=py_0 - tk=8.6.8
- html5lib=1.0.1=py36_0 - torchvision=0.5.0
- hypothesis=5.4.1=py_0 - tornado=6.0.4
- icu=58.2=h9c2bf20_1 - traitlets=4.3.3
- idna=2.8=py36_0 - wcwidth=0.1.9
- imageio=2.6.1=py36_0 - wheel=0.34.2
- imagesize=1.2.0=py_0 - widgetsnbextension=3.5.1
- importlib_metadata=1.5.0=py36_0 - xz=5.2.5
- intel-openmp=2020.0=166 - zeromq=4.3.2
- ipykernel=5.1.4=py36h39e3cac_0 - zipp=3.1.0
- ipython=7.12.0=py36h5ca1d4c_0 - zlib=1.2.11
- ipython_genutils=0.2.0=py36_0 - zstd=1.3.7
- ipywidgets=7.5.1=py_0
- isort=4.3.21=py36_0
- itsdangerous=1.1.0=py36_0
- jbig=2.1=hdba287a_0
- jdcal=1.4.1=py_0
- jedi=0.16.0=py36_0
- jeepney=0.4.2=py_0
- jinja2=2.11.1=py_0
- joblib=0.14.1=py_0
- jpeg=9b=h024ee3a_2
- json5=0.9.1=py_0
- jsonschema=3.2.0=py36_0
- jupyter=1.0.0=py36_7
- jupyter_client=5.3.4=py36_0
- jupyter_console=6.1.0=py_0
- jupyter_core=4.6.1=py36_0
- jupyterlab=1.2.6=pyhf63ae98_0
- jupyterlab_server=1.0.6=py_0
- keyring=21.1.0=py36_0
- kiwisolver=1.1.0=py36he6710b0_0
- krb5=1.17.1=h173b8e3_0
- lazy-object-proxy=1.4.3=py36h7b6447c_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libcurl=7.68.0=h20c2e04_0
- libedit=3.1.20181209=hc058e9b_0
- libffi=3.2.1=hd88cf55_4
- libgcc-ng=9.1.0=hdf63c60_0
- libgfortran-ng=7.3.0=hdf63c60_0
- libpng=1.6.37=hbc83047_0
- libsodium=1.0.16=h1bed415_0
- libssh2=1.8.2=h1ba5d50_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- libtiff=4.1.0=h2733197_0
- libtool=2.4.6=h7b6447c_5
- libuuid=1.0.3=h1bed415_2
- libxcb=1.13=h1bed415_1
- libxml2=2.9.9=hea5a465_1
- libxslt=1.1.33=h7d1a2b0_0
- llvmlite=0.31.0=py36hd408876_0
- locket=0.2.0=py36_1
- lxml=4.5.0=py36hefd8a0e_0
- lz4-c=1.8.1.2=h14c3975_0
- lzo=2.10=h49e0be7_2
- markupsafe=1.1.1=py36h7b6447c_0
- matplotlib=3.1.3=py36_0
- matplotlib-base=3.1.3=py36hef1b27d_0
- mccabe=0.6.1=py36_1
- mistune=0.8.4=py36h7b6447c_0
- mkl=2020.0=166
- mkl-service=2.3.0=py36he904b0f_0
- mkl_fft=1.0.15=py36ha843d7b_0
- mkl_random=1.1.0=py36hd6b4f25_0
- mock=4.0.1=py_0
- more-itertools=8.2.0=py_0
- mpc=1.1.0=h10f8cd9_1
- mpfr=4.0.1=hdf1c602_3
- mpmath=1.1.0=py36_0
- msgpack-python=0.6.1=py36hfd86e86_1
- multipledispatch=0.6.0=py36_0
- nbconvert=5.6.1=py36_0
- nbformat=5.0.4=py_0
- ncurses=6.1=he6710b0_1
- networkx=2.4=py_0
- ninja=1.9.0=py36hfd86e86_0
- nltk=3.4.5=py36_0
- nose=1.3.7=py36_2
- notebook=6.0.3=py36_0
- numba=0.48.0=py36h0573a6f_0
- numexpr=2.7.1=py36h423224d_0
- numpy=1.18.1=py36h4f9e942_0
- numpy-base=1.18.1=py36hde5b4d6_1
- numpydoc=0.9.2=py_0
- olefile=0.46=py36_0
- openpyxl=3.0.3=py_0
- openssl=1.1.1d=h7b6447c_4
- packaging=20.1=py_0
- pandas=1.0.1=py36h0573a6f_0
- pandoc=2.2.3.2=0
- pandocfilters=1.4.2=py36_1
- pango=1.42.4=h049681c_0
- parso=0.6.1=py_0
- partd=1.1.0=py_0
- path=13.1.0=py36_0
- path.py=12.4.0=0
- pathlib2=2.3.5=py36_0
- patsy=0.5.1=py36_0
- pcre=8.43=he6710b0_0
- pep8=1.7.1=py36_0
- pexpect=4.8.0=py36_0
- pickleshare=0.7.5=py36_0
- pillow=7.0.0=py36hb39fc2d_0
- pip=20.0.2=py36_1
- pixman=0.38.0=h7b6447c_0
- pluggy=0.13.1=py36_0
- ply=3.11=py36_0
- prometheus_client=0.7.1=py_0
- prompt_toolkit=3.0.3=py_0
- psutil=5.6.7=py36h7b6447c_0
- ptyprocess=0.6.0=py36_0
- py=1.8.1=py_0
- pycodestyle=2.5.0=py36_0
- pycosat=0.6.3=py36h7b6447c_0
- pycparser=2.19=py36_0
- pycrypto=2.6.1=py36h14c3975_9
- pycurl=7.43.0.5=py36h1ba5d50_0
- pyflakes=2.1.1=py36_0
- pygments=2.5.2=py_0
- pylint=2.4.4=py36_0
- pyodbc=4.0.30=py36he6710b0_0
- pyopenssl=19.1.0=py36_0
- pyparsing=2.4.6=py_0
- pyqt=5.9.2=py36h05f1152_2
- pyrsistent=0.15.7=py36h7b6447c_0
- pysocks=1.7.1=py36_0
- pytables=3.6.1=py36h71ec239_0
- pytest=5.3.5=py36_0
- pytest-arraydiff=0.3=py36h39e3cac_0
- pytest-astropy=0.8.0=py_0
- pytest-astropy-header=0.1.2=py_0
- pytest-doctestplus=0.5.0=py_0
- pytest-openfiles=0.4.0=py_0
- pytest-remotedata=0.3.2=py36_0
- python=3.6.10=h0371630_0
- python-dateutil=2.8.1=py_0
- pytorch=1.4.0=py3.6_cpu_0
- pytz=2019.3=py_0
- pywavelets=1.1.1=py36h7b6447c_0
- pyyaml=5.3=py36h7b6447c_0
- pyzmq=18.1.1=py36he6710b0_0
- qt=5.9.7=h5867ecd_1
- qtawesome=0.6.1=py_0
- qtconsole=4.6.0=py_1
- qtpy=1.9.0=py_0
- readline=7.0=h7b6447c_5
- requests=2.22.0=py36_1
- rope=0.16.0=py_0
- ruamel_yaml=0.15.87=py36h7b6447c_0
- scikit-image=0.16.2=py36h0573a6f_0
- scikit-learn=0.22.1=py36hd81dba3_0
- scipy=1.4.1=py36h0b6359f_0
- seaborn=0.10.0=py_0
- secretstorage=3.1.2=py36_0
- send2trash=1.5.0=py36_0
- setuptools=45.2.0=py36_0
- simplegeneric=0.8.1=py36_2
- singledispatch=3.4.0.3=py36_0
- sip=4.19.8=py36hf484d3e_0
- six=1.14.0=py36_0
- snappy=1.1.7=hbae5bb6_3
- snowballstemmer=2.0.0=py_0
- sortedcollections=1.1.2=py36_0
- sortedcontainers=2.1.0=py36_0
- soupsieve=1.9.5=py36_0
- sphinx=2.4.0=py_0
- sphinxcontrib=1.0=py36_1
- sphinxcontrib-applehelp=1.0.1=py_0
- sphinxcontrib-devhelp=1.0.1=py_0
- sphinxcontrib-htmlhelp=1.0.2=py_0
- sphinxcontrib-jsmath=1.0.1=py_0
- sphinxcontrib-qthelp=1.0.2=py_0
- sphinxcontrib-serializinghtml=1.1.3=py_0
- sphinxcontrib-websupport=1.2.0=py_0
- spyder=3.3.6=py36_0
- spyder-kernels=0.5.2=py36_0
- sqlalchemy=1.3.13=py36h7b6447c_0
- sqlite=3.31.1=h7b6447c_0
- statsmodels=0.11.0=py36h7b6447c_0
- sympy=1.5.1=py36_0
- tblib=1.6.0=py_0
- terminado=0.8.3=py36_0
- testpath=0.4.4=py_0
- tk=8.6.8=hbc83047_0
- toolz=0.10.0=py_0
- torchvision=0.5.0=py36_cpu
- tornado=6.0.3=py36h7b6447c_3
- traitlets=4.3.3=py36_0
- typed-ast=1.4.1=py36h7b6447c_0
- unicodecsv=0.14.1=py36_0
- unixodbc=2.3.7=h14c3975_0
- urllib3=1.25.8=py36_0
- wcwidth=0.1.8=py_0
- webencodings=0.5.1=py36_1
- werkzeug=1.0.0=py_0
- wheel=0.34.2=py36_0
- widgetsnbextension=3.5.1=py36_0
- wrapt=1.11.2=py36h7b6447c_0
- wurlitzer=2.0.0=py36_0
- xlrd=1.2.0=py36_0
- xlsxwriter=1.2.7=py_0
- xlwt=1.3.0=py36_0
- xz=5.2.4=h14c3975_4
- yaml=0.1.7=had09818_2
- zeromq=4.3.1=he6710b0_3
- zict=1.0.0=py_0
- zipp=2.2.0=py_0
- zlib=1.2.11=h7b6447c_3
- zstd=1.3.7=h0b5b093_0
- pip: - pip:
- kornia==0.2.0 - absl-py==0.9.0
- opencv-contrib-python==4.2.0.32 - cachetools==4.1.0
prefix: /home/old-ufo/anaconda3/envs/mpv-assignments-cpu-only - chardet==3.0.4
- cycler==0.10.0
- google-auth==1.14.0
- google-auth-oauthlib==0.4.1
- grpcio==1.28.1
- idna==2.9
- ipython-genutils==0.2.0
- kiwisolver==1.2.0
- kornia==0.2.1
- markdown==3.2.1
- matplotlib==3.2.1
- oauthlib==3.1.0
- opencv-contrib-python==4.2.0.34
- pandas==1.0.3
- pandocfilters==1.4.2
- protobuf==3.11.3
- pyasn1==0.4.8
- pyasn1-modules==0.2.8
- pyparsing==2.4.7
- pytz==2019.3
- pyzmq==19.0.0
- requests==2.23.0
- requests-oauthlib==1.3.0
- rsa==4.0
- scipy==1.4.1
- seaborn==0.10.0
- tensorboard==2.2.1
- tensorboard-plugin-wit==1.6.0.post3
- tensorboardx==2.0
- terminado==0.8.3
- tqdm==4.45.0
- urllib3==1.25.9
- webencodings==0.5.1
- werkzeug==1.0.1
name: mpv-assignments name: mpv-assignments-gpu
channels: channels:
- pytorch - pytorch
- conda-forge
- defaults - defaults
dependencies: dependencies:
- _anaconda_depends=2019.03=py36_0 - _libgcc_mutex=0.1
- _libgcc_mutex=0.1=main - attrs=19.3.0
- alabaster=0.7.12=py36_0 - backcall=0.1.0
- anaconda=custom=py36_1 - blas=1.0
- anaconda-client=1.7.2=py36_0 - bleach=3.1.4
- anaconda-project=0.8.4=py_0 - ca-certificates=2020.4.5.1
- asn1crypto=1.3.0=py36_0 - certifi=2020.4.5.1
- astroid=2.3.3=py36_0 - cudatoolkit=10.1.243
- astropy=4.0=py36h7b6447c_0 - decorator=4.4.2
- atomicwrites=1.3.0=py36_1 - defusedxml=0.6.0
- attrs=19.3.0=py_0 - entrypoints=0.3
- babel=2.8.0=py_0 - freetype=2.9.1
- backcall=0.1.0=py36_0 - importlib-metadata=1.6.0
- backports=1.0=py_2 - importlib_metadata=1.6.0
- backports.os=0.1.1=py36_0 - intel-openmp=2020.0
- backports.shutil_get_terminal_size=1.0.0=py36_2 - ipykernel=5.2.1
- beautifulsoup4=4.8.2=py36_0 - ipython=7.13.0
- bitarray=1.2.1=py36h7b6447c_0 - ipython_genutils=0.2.0
- bkcharts=0.2=py36_0 - ipywidgets=7.5.1
- blas=1.0=mkl - jedi=0.17.0
- bleach=3.1.0=py36_0 - jinja2=2.11.2
- blosc=1.16.3=hd408876_0 - jpeg=9b
- bokeh=1.4.0=py36_0 - jsonschema=3.2.0
- boto=2.49.0=py36_0 - jupyter_client=6.1.3
- bottleneck=1.3.1=py36hdd07704_0 - jupyter_core=4.6.3
- bzip2=1.0.8=h7b6447c_0 - ld_impl_linux-64=2.33.1
- ca-certificates=2020.1.1=0 - libedit=3.1.20181209
- cairo=1.14.12=h8948797_3 - libffi=3.2.1
- certifi=2019.11.28=py36_0 - libgcc-ng=9.1.0
- cffi=1.14.0=py36h2e261b9_0 - libgfortran-ng=7.3.0
- chardet=3.0.4=py36_1003 - libpng=1.6.37
- click=7.0=py36_0 - libsodium=1.0.17
- cloudpickle=1.3.0=py_0 - libstdcxx-ng=9.1.0
- clyent=1.2.2=py36_1 - libtiff=4.1.0
- colorama=0.4.3=py_0 - markupsafe=1.1.1
- contextlib2=0.6.0.post1=py_0 - mistune=0.8.4
- cryptography=2.8=py36h1ba5d50_0 - mkl=2020.0
- cudatoolkit=10.1.243=h6bb024c_0 - mkl-service=2.3.0
- curl=7.68.0=hbc83047_0 - mkl_fft=1.0.15
- cycler=0.10.0=py36_0 - mkl_random=1.1.0
- cython=0.29.15=py36he6710b0_0 - nbconvert=5.6.1
- cytoolz=0.10.1=py36h7b6447c_0 - nbformat=5.0.6
- dask=2.10.1=py_0 - ncurses=6.2
- dask-core=2.10.1=py_0 - ninja=1.9.0
- dbus=1.13.12=h746ee38_0 - notebook=6.0.3
- decorator=4.4.1=py_0 - numpy=1.18.1
- defusedxml=0.6.0=py_0 - numpy-base=1.18.1
- distributed=2.10.0=py_0 - olefile=0.46
- docutils=0.16=py36_0 - openssl=1.1.1g
- entrypoints=0.3=py36_0 - pandoc=2.9.2.1
- et_xmlfile=1.0.1=py36_0 - parso=0.7.0
- expat=2.2.6=he6710b0_0 - pexpect=4.8.0
- fastcache=1.1.0=py36h7b6447c_0 - pickleshare=0.7.5
- flask=1.1.1=py_0 - pillow=7.0.0
- fontconfig=2.13.0=h9420a91_0 - pip=20.0.2
- freetype=2.9.1=h8a8886c_1 - prometheus_client=0.7.1
- fribidi=1.0.5=h7b6447c_0 - prompt-toolkit=3.0.5
- fsspec=0.6.2=py_0 - ptyprocess=0.6.0
- get_terminal_size=1.0.0=haa9412d_0 - pygments=2.6.1
- gevent=1.4.0=py36h7b6447c_0 - pyrsistent=0.16.0
- glib=2.63.1=h5a9c865_0 - python=3.6.10
- gmp=6.1.2=h6c8ec71_1 - python-dateutil=2.8.1
- gmpy2=2.0.8=py36h10f8cd9_2 - python_abi=3.6
- graphite2=1.3.13=h23475e2_0 - pytorch=1.4.0
- greenlet=0.4.15=py36h7b6447c_0 - readline=8.0
- gst-plugins-base=1.14.0=hbbd80ab_1 - send2trash=1.5.0
- gstreamer=1.14.0=hb453b48_1 - setuptools=46.1.3
- h5py=2.10.0=py36h7918eee_0 - six=1.14.0
- harfbuzz=1.8.8=hffaf4a1_0 - sqlite=3.31.1
- hdf5=1.10.4=hb1b8bf9_0 - testpath=0.4.4
- heapdict=1.0.1=py_0 - tk=8.6.8
- html5lib=1.0.1=py36_0 - torchvision=0.5.0
- hypothesis=5.4.1=py_0 - tornado=6.0.4
- icu=58.2=h9c2bf20_1 - traitlets=4.3.3
- idna=2.8=py36_0 - wcwidth=0.1.9
- imageio=2.6.1=py36_0 - wheel=0.34.2
- imagesize=1.2.0=py_0 - widgetsnbextension=3.5.1
- importlib_metadata=1.5.0=py36_0 - xz=5.2.5
- intel-openmp=2020.0=166 - zeromq=4.3.2
- ipykernel=5.1.4=py36h39e3cac_0 - zipp=3.1.0
- ipython=7.12.0=py36h5ca1d4c_0 - zlib=1.2.11
- ipython_genutils=0.2.0=py36_0 - zstd=1.3.7
- ipywidgets=7.5.1=py_0
- isort=4.3.21=py36_0
- itsdangerous=1.1.0=py36_0
- jbig=2.1=hdba287a_0
- jdcal=1.4.1=py_0
- jedi=0.16.0=py36_0
- jeepney=0.4.2=py_0
- jinja2=2.11.1=py_0
- joblib=0.14.1=py_0
- jpeg=9b=h024ee3a_2
- json5=0.9.1=py_0
- jsonschema=3.2.0=py36_0
- jupyter=1.0.0=py36_7
- jupyter_client=5.3.4=py36_0
- jupyter_console=6.1.0=py_0
- jupyter_core=4.6.1=py36_0
- jupyterlab=1.2.6=pyhf63ae98_0
- jupyterlab_server=1.0.6=py_0
- keyring=21.1.0=py36_0
- kiwisolver=1.1.0=py36he6710b0_0
- krb5=1.17.1=h173b8e3_0
- lazy-object-proxy=1.4.3=py36h7b6447c_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libcurl=7.68.0=h20c2e04_0
- libedit=3.1.20181209=hc058e9b_0
- libffi=3.2.1=hd88cf55_4
- libgcc-ng=9.1.0=hdf63c60_0
- libgfortran-ng=7.3.0=hdf63c60_0
- libpng=1.6.37=hbc83047_0
- libsodium=1.0.16=h1bed415_0
- libssh2=1.8.2=h1ba5d50_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- libtiff=4.1.0=h2733197_0
- libtool=2.4.6=h7b6447c_5
- libuuid=1.0.3=h1bed415_2
- libxcb=1.13=h1bed415_1
- libxml2=2.9.9=hea5a465_1
- libxslt=1.1.33=h7d1a2b0_0
- llvmlite=0.31.0=py36hd408876_0
- locket=0.2.0=py36_1
- lxml=4.5.0=py36hefd8a0e_0
- lz4-c=1.8.1.2=h14c3975_0
- lzo=2.10=h49e0be7_2
- markupsafe=1.1.1=py36h7b6447c_0
- matplotlib=3.1.3=py36_0
- matplotlib-base=3.1.3=py36hef1b27d_0
- mccabe=0.6.1=py36_1
- mistune=0.8.4=py36h7b6447c_0
- mkl=2020.0=166
- mkl-service=2.3.0=py36he904b0f_0
- mkl_fft=1.0.15=py36ha843d7b_0
- mkl_random=1.1.0=py36hd6b4f25_0
- mock=4.0.1=py_0
- more-itertools=8.2.0=py_0
- mpc=1.1.0=h10f8cd9_1
- mpfr=4.0.1=hdf1c602_3
- mpmath=1.1.0=py36_0
- msgpack-python=0.6.1=py36hfd86e86_1
- multipledispatch=0.6.0=py36_0
- nbconvert=5.6.1=py36_0
- nbformat=5.0.4=py_0
- ncurses=6.1=he6710b0_1
- networkx=2.4=py_0
- ninja=1.9.0=py36hfd86e86_0
- nltk=3.4.5=py36_0
- nose=1.3.7=py36_2
- notebook=6.0.3=py36_0
- numba=0.48.0=py36h0573a6f_0
- numexpr=2.7.1=py36h423224d_0
- numpy=1.18.1=py36h4f9e942_0
- numpy-base=1.18.1=py36hde5b4d6_1
- numpydoc=0.9.2=py_0
- olefile=0.46=py36_0
- openpyxl=3.0.3=py_0
- openssl=1.1.1d=h7b6447c_4
- packaging=20.1=py_0
- pandas=1.0.1=py36h0573a6f_0
- pandoc=2.2.3.2=0
- pandocfilters=1.4.2=py36_1
- pango=1.42.4=h049681c_0
- parso=0.6.1=py_0
- partd=1.1.0=py_0
- path=13.1.0=py36_0
- path.py=12.4.0=0
- pathlib2=2.3.5=py36_0
- patsy=0.5.1=py36_0
- pcre=8.43=he6710b0_0
- pep8=1.7.1=py36_0
- pexpect=4.8.0=py36_0
- pickleshare=0.7.5=py36_0
- pillow=7.0.0=py36hb39fc2d_0
- pip=20.0.2=py36_1
- pixman=0.38.0=h7b6447c_0
- pluggy=0.13.1=py36_0
- ply=3.11=py36_0
- prometheus_client=0.7.1=py_0
- prompt_toolkit=3.0.3=py_0
- psutil=5.6.7=py36h7b6447c_0
- ptyprocess=0.6.0=py36_0
- py=1.8.1=py_0
- pycodestyle=2.5.0=py36_0
- pycosat=0.6.3=py36h7b6447c_0
- pycparser=2.19=py36_0
- pycrypto=2.6.1=py36h14c3975_9
- pycurl=7.43.0.5=py36h1ba5d50_0
- pyflakes=2.1.1=py36_0
- pygments=2.5.2=py_0
- pylint=2.4.4=py36_0
- pyodbc=4.0.30=py36he6710b0_0
- pyopenssl=19.1.0=py36_0
- pyparsing=2.4.6=py_0
- pyqt=5.9.2=py36h05f1152_2
- pyrsistent=0.15.7=py36h7b6447c_0
- pysocks=1.7.1=py36_0
- pytables=3.6.1=py36h71ec239_0
- pytest=5.3.5=py36_0
- pytest-arraydiff=0.3=py36h39e3cac_0
- pytest-astropy=0.8.0=py_0
- pytest-astropy-header=0.1.2=py_0
- pytest-doctestplus=0.5.0=py_0
- pytest-openfiles=0.4.0=py_0
- pytest-remotedata=0.3.2=py36_0
- python=3.6.10=h0371630_0
- python-dateutil=2.8.1=py_0
- pytorch=1.4.0=py3.6_cuda10.1.243_cudnn7.6.3_0
- pytz=2019.3=py_0
- pywavelets=1.1.1=py36h7b6447c_0
- pyyaml=5.3=py36h7b6447c_0
- pyzmq=18.1.1=py36he6710b0_0
- qt=5.9.7=h5867ecd_1
- qtawesome=0.6.1=py_0
- qtconsole=4.6.0=py_1
- qtpy=1.9.0=py_0
- readline=7.0=h7b6447c_5
- requests=2.22.0=py36_1
- rope=0.16.0=py_0
- ruamel_yaml=0.15.87=py36h7b6447c_0
- scikit-image=0.16.2=py36h0573a6f_0
- scikit-learn=0.22.1=py36hd81dba3_0
- scipy=1.4.1=py36h0b6359f_0
- seaborn=0.10.0=py_0
- secretstorage=3.1.2=py36_0
- send2trash=1.5.0=py36_0
- setuptools=45.2.0=py36_0
- simplegeneric=0.8.1=py36_2
- singledispatch=3.4.0.3=py36_0
- sip=4.19.8=py36hf484d3e_0
- six=1.14.0=py36_0
- snappy=1.1.7=hbae5bb6_3
- snowballstemmer=2.0.0=py_0
- sortedcollections=1.1.2=py36_0
- sortedcontainers=2.1.0=py36_0
- soupsieve=1.9.5=py36_0
- sphinx=2.4.0=py_0
- sphinxcontrib=1.0=py36_1
- sphinxcontrib-applehelp=1.0.1=py_0
- sphinxcontrib-devhelp=1.0.1=py_0
- sphinxcontrib-htmlhelp=1.0.2=py_0
- sphinxcontrib-jsmath=1.0.1=py_0
- sphinxcontrib-qthelp=1.0.2=py_0
- sphinxcontrib-serializinghtml=1.1.3=py_0
- sphinxcontrib-websupport=1.2.0=py_0
- spyder=3.3.6=py36_0
- spyder-kernels=0.5.2=py36_0
- sqlalchemy=1.3.13=py36h7b6447c_0
- sqlite=3.31.1=h7b6447c_0
- statsmodels=0.11.0=py36h7b6447c_0
- sympy=1.5.1=py36_0
- tblib=1.6.0=py_0
- terminado=0.8.3=py36_0
- testpath=0.4.4=py_0
- tk=8.6.8=hbc83047_0
- toolz=0.10.0=py_0
- torchvision=0.5.0=py36_cu101
- tornado=6.0.3=py36h7b6447c_3
- traitlets=4.3.3=py36_0
- typed-ast=1.4.1=py36h7b6447c_0
- unicodecsv=0.14.1=py36_0
- unixodbc=2.3.7=h14c3975_0
- urllib3=1.25.8=py36_0
- wcwidth=0.1.8=py_0
- webencodings=0.5.1=py36_1
- werkzeug=1.0.0=py_0
- wheel=0.34.2=py36_0
- widgetsnbextension=3.5.1=py36_0
- wrapt=1.11.2=py36h7b6447c_0
- wurlitzer=2.0.0=py36_0
- xlrd=1.2.0=py36_0
- xlsxwriter=1.2.7=py_0
- xlwt=1.3.0=py36_0
- xz=5.2.4=h14c3975_4
- yaml=0.1.7=had09818_2
- zeromq=4.3.1=he6710b0_3
- zict=1.0.0=py_0
- zipp=2.2.0=py_0
- zlib=1.2.11=h7b6447c_3
- zstd=1.3.7=h0b5b093_0
- pip: - pip:
- kornia==0.2.0 - absl-py==0.9.0
- opencv-contrib-python==4.2.0.32 - cachetools==4.1.0
prefix: /home/old-ufo/anaconda3/envs/mpv-assignments - chardet==3.0.4
- cycler==0.10.0
- google-auth==1.14.0
- google-auth-oauthlib==0.4.1
- grpcio==1.28.1
- idna==2.9
- ipython-genutils==0.2.0
- kiwisolver==1.2.0
- kornia==0.2.1
- markdown==3.2.1
- matplotlib==3.2.1
- oauthlib==3.1.0
- opencv-contrib-python==4.2.0.34
- pandas==1.0.3
- pandocfilters==1.4.2
- protobuf==3.11.3
- pyasn1==0.4.8
- pyasn1-modules==0.2.8
- pyparsing==2.4.7
- pytz==2019.3
- pyzmq==19.0.0
- requests==2.23.0
- requests-oauthlib==1.3.0
- rsa==4.0
- scipy==1.4.1
- seaborn==0.10.0
- tensorboard==2.2.1
- tensorboard-plugin-wit==1.6.0.post3
- tensorboardx==2.0
- terminado==0.8.3
- tqdm==4.45.0
- urllib3==1.25.9
- webencodings==0.5.1
- werkzeug==1.0.1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment